[ https://issues.apache.org/jira/browse/IOTDB-122?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Tian Jiang closed IOTDB-122. ---------------------------- > Support prepared insertion > -------------------------- > > Key: IOTDB-122 > URL: https://issues.apache.org/jira/browse/IOTDB-122 > Project: Apache IoTDB > Issue Type: New Feature > Reporter: Tian Jiang > Priority: Major > Labels: pull-request-available > Time Spent: 10m > Remaining Estimate: 0h > > As some have mentioned, sql parser(antlr) may consume about 40% of time in > ingestion, especially when small sqls executed sent frequently. Luckily, > IoTDB insertion sqls are currently all alike and simple, there are 4 most > meaningful parts of such sqls: deviceId, measurements, values and time. For > such a simple structure, using tools like antlr may be just too heavy. > Intuitively, PreparedStatement in Standard JDBC interface can be just used > for reliving parsing overhead when sqls are similar. I will describe how > PreparedStatement works as follow (this is still left to be implemented): > 1. The user wants to create a prepared insert statement and called > `connection.prepareStatement(“Insert”)`; > 2. The connection matches the parameter string with some templates, finds out > it is an insertion and returns an IoTDBPreparedInsertStatement pStmt. > 3. The user calls `pStmt.setDevice(“root.device1”); pStmt.setTime(100); > pStmt.setMeasurements(measurementArray); pStmt.setValues(valueArray);` to set > parameters for next insertion. > 4. The user calls `pStmt.execute()` to execute an insertion. > 5. The PreparedInsertStatement creates a TSInsertionReq, puts deviceId, > measurements, values and time into this request and sends this request to the > server. > 6. The server receives the request, extracts parameters from the request and > executes an insertion directly through database engine and return a > TSInsertionResp to the user. -- This message was sent by Atlassian JIRA (v7.6.14#76016)