Coder Social home page Coder Social logo

Comments (6)

anthony-tuininga avatar anthony-tuininga commented on August 15, 2024

Can you elaborate further on what you are hoping to see? Perhaps with an example? Currently, the way you repeat executions is as follows:

// set up statement to execute and perform all binds and defines (one-time)
dpiConn_prepareStmt()
dpiStmt_bindByPos()
dpiStmt_bindByPos()
...
dpiStmt_define()
dpiStmt_define()
...

// execute and fetch (multiple times)
modify bind variable values by manipulating dpiData structures
dpiStmt_execute()
dpiStmt_fetch()
examine defined variable values by reading dpiData structures
...

How you were you thinking this could be improved?

from odpi.

dwxiayi avatar dwxiayi commented on August 15, 2024

I'm sorry,step6 is repeat 2-5,step2 with different sql.
In occi it provide functions:
virtual Statement* Connection::createStatement(const UString &sql);
virtual void Statement::setSQL(const string &sql);
virtual Status Statement::execute(const string &sql = "");
virtual ResultSet* Statement::executeQuery( const string &sql = "");
virtual unsigned int Statement::executeUpdate( const string &sql = "");
so I can re-use Statement,with one call createStatement.
In ocilib it provide same functions,likes:
OCI_Statement* OCI_StatementCreate(OCI_Connection *con);
int OCI_Prepare( OCI_Statement *stmt, const char *sql);
int OCI_Execute( OCI_Statement *stmt);
int OCI_ExecuteStmt( OCI_Statement *stmt, const char *sql);

from odpi.

anthony-tuininga avatar anthony-tuininga commented on August 15, 2024

Since you closed this I assume you are no longer interested in these changes?

from odpi.

dwxiayi avatar dwxiayi commented on August 15, 2024

this days,I try to change my wrapper oracle-db-driver from occi to oci or other libs writed by C language,I think it may has good performance and more functions.however,I come up against difficulties,they are above oci,OCI seem don't support coroutine(coroutine can see as user state thread, when dbserver is busy for data-search、commit or other things,dbclient will change stack,and execute other coroutine do something in one thread, dbclient will continue work on dbserver respond(data recv), so it will have a good performance, useing less threads or processes), I use coroutine lib(https://github.com/Tencent/libco), but it behave ok when less than 20 coroutine execute in one thread, but when more than 20 coroutine execute sql, the process will be killed by system.
so if this question not be solved, change occi to other lib is meaningless.

from odpi.

dwxiayi avatar dwxiayi commented on August 15, 2024

hi anthony-tuininga, do you interested in coroutine?

from odpi.

anthony-tuininga avatar anthony-tuininga commented on August 15, 2024

I am interested in anything that will improve performance! If you want to use coroutines with ODPI-C, you will need to create a session pool (dpiPool) and then for each thread/coroutine you need to acquire a connection from that pool. OCI does not provide (currently anyway!) the ability to execute multiple statements asynchronously using one connection. But if you use a session pool you can get a very reasonable approximation. :-) Perhaps try that and see how it works for you?

from odpi.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.