From fdc2db911856bd08652364c5b064061d98d0c775 Mon Sep 17 00:00:00 2001 From: rusher Date: Fri, 23 Mar 2018 14:27:00 +0100 Subject: [PATCH] permit using pipelining option at query level pipelining documentation --- README.md | 2 +- documentation/misc/pipelining.png | Bin 0 -> 100981 bytes documentation/pipelining.md | 45 ++++++++++++++++++++++++++++ documentation/readme.md | 2 +- src/cmd/handshake/handshake.js | 1 - src/connection.js | 22 +++++++------- test/integration/test-pipelining.js | 16 ++++++---- 7 files changed, 68 insertions(+), 20 deletions(-) create mode 100644 documentation/misc/pipelining.png create mode 100644 documentation/pipelining.md diff --git a/README.md b/README.md index b3a294a..d7ee207 100644 --- a/README.md +++ b/README.md @@ -25,7 +25,7 @@ connection.query("INSERT INTO myTable VALUES (1)"); connection.query("INSERT INTO myTable VALUES (2)"); ``` queries are not send one by one, waiting for result before sending next one. -queries are send one after another, avoiding a lot of network latency (particulary when database isn't on same host). +queries are send one after another, avoiding a lot of network latency ([detail information](/documentation/pipelining.md)). Extended documentation of API : [Complete documentation](/documentation/readme.md) diff --git a/documentation/misc/pipelining.png b/documentation/misc/pipelining.png new file mode 100644 index 0000000000000000000000000000000000000000..95284ad728ff2583085ef3c34e30f3ac67fd326c GIT binary patch literal 100981 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 { + //must handle error if any + const basketId = res.insertId; + try { + connection.query("INSERT INTO BASKET_ITEM(basketId, itemId) values (?, ?)", [basketId, 100]); + connection.query("INSERT INTO BASKET_ITEM(basketId, itemId) values (?, ?)", [basketId, 101]); + connection.query("INSERT INTO BASKET_ITEM(basketId, itemId) values (?, ?)", [basketId, 102], (err) => { + //must handle error if any + connection.commit(); + }); + } catch (err) { + connection.rollback(); + //handle error + } +}); +``` +#### Network exchanges : +

+ +

+ + +Using standard client-server protocol (aka "ping-pong"), driver communicate with database following a request–response messaging pattern. +When sending a command, connector won't send any until response is available from input socket. + +Using option "pipelining", commands are send by bulk, saving network latency. +The Inconvenient is that if an error occur on first/second command, following command are already send to database. +In that sense that pipelining is "optimistic". + diff --git a/documentation/readme.md b/documentation/readme.md index b3d68a6..656b26d 100644 --- a/documentation/readme.md +++ b/documentation/readme.md @@ -103,7 +103,7 @@ default: false * `timezone`: string. force using indicated timezone, not current node.js timezone. possible value are 'Z' (fot UTC), 'local' or '±HH:MM' format * `nestTables`: boolean/string. resultset are presented by table to avoid results with colliding fields. default: false * `rowsAsArray`: boolean. default rows are defined as a JSON object. when active row is an array. default false -* `pipelining`: boolean. will send query one by one, but without waiting the results of previous entry. default true +* `pipelining`: boolean. will send query one by one, but without waiting the results of previous entry ([detail information](/documentation/pipelining.md)). default true ## Query `connection.query(sql[, values][,callback])` diff --git a/src/cmd/handshake/handshake.js b/src/cmd/handshake/handshake.js index 05921a5..5c2e000 100644 --- a/src/cmd/handshake/handshake.js +++ b/src/cmd/handshake/handshake.js @@ -153,7 +153,6 @@ class Handshake extends Command { if (this.onResult) this.onResult(null); this.connEvents.emit("connect"); - this.emit("send_end"); this.emit("end"); } diff --git a/src/connection.js b/src/connection.js index 2f5218c..b90ca38 100644 --- a/src/connection.js +++ b/src/connection.js @@ -31,7 +31,7 @@ class Connection { this._out = new PacketOutputStream(this.opts, this.info); this._addCommand = this._addCommandEnable; - this._addCommand(new Handshake(this)); + this._addCommand(new Handshake(this), false); this.timeoutRef = null; this._closing = null; @@ -148,10 +148,11 @@ class Connection { */ query(sql, values, cb) { let _options, _sql, _values, _cb; - + let _pipelining = this.opts.pipelining; if (typeof sql === "object") { _options = sql; _sql = _options.sql; + if (_options.pipelining !== undefined) _pipelining = _options.pipelining; } else { _sql = sql; } @@ -164,12 +165,12 @@ class Connection { } const cmd = new Query(this._events, _options, _sql, _values, _cb); - return this._addCommand(cmd); + return this._addCommand(cmd, _pipelining); } ping(options, callback) { const _cb = typeof options === "function" ? options : callback; - return this._addCommand(new Ping(this._events, _cb)); + return this._addCommand(new Ping(this._events, _cb), false); } /** @@ -191,7 +192,8 @@ class Connection { this._clear(); if (callback) setImmediate(callback); }.bind(this) - ) + ), + false ); } @@ -417,7 +419,7 @@ class Connection { this.info.status & ServerStatus.STATUS_IN_TRANS ) { const cmd = new Query(this._events, _options, sql, null, _cb); - return this._addCommand(cmd); + return this._addCommand(cmd, false); } if (_cb) _cb(); @@ -438,12 +440,10 @@ class Connection { } } - _addCommandEnable(cmd) { + _addCommandEnable(cmd, pipelining) { let conn = this; - cmd.once(this.opts.pipelining ? "send_end" : "end", () => - setImmediate(conn._nextSendCmd.bind(conn)) - ); + cmd.once(pipelining ? "send_end" : "end", () => setImmediate(conn._nextSendCmd.bind(conn))); if (!this._sendCmd && this._sendQueue.isEmpty()) { this._sendCmd = cmd; @@ -456,7 +456,7 @@ class Connection { return cmd; } - _addCommandDisabled(cmd) { + _addCommandDisabled(cmd, pipelining) { const err = Utils.createError( "Cannot execute new commands: connection closed", true, diff --git a/test/integration/test-pipelining.js b/test/integration/test-pipelining.js index 3827d8b..d656b91 100644 --- a/test/integration/test-pipelining.js +++ b/test/integration/test-pipelining.js @@ -5,7 +5,7 @@ const assert = require("chai").assert; describe("pipelining", () => { let conn1, conn2; - const iterations = 10000; + const iterations = 5000; before(function(done) { conn1 = base.createConnection({ pipelining: false }); @@ -24,20 +24,24 @@ describe("pipelining", () => { conn2.end(); }); - it("10000 insert test speed", function(done) { + it("5000 insert test speed", function(done) { this.timeout(60000); conn1.query("CREATE TEMPORARY TABLE pipeline1 (test int)"); conn2.query("CREATE TEMPORARY TABLE pipeline2 (test int)", (err, res) => { insertBulk(conn1, "pipeline1", diff => { insertBulk(conn2, "pipeline2", pipelineDiff => { - assert.isTrue( - diff[0] > pipelineDiff[0] || (diff[0] === pipelineDiff[0] && diff[1] > pipelineDiff[1]), - "error - time to insert 1000 : std=" + + if (shareConn.hasMinVersion(10, 2, 0)) { + //before 10.1, speed is sometime nearly equivalent using pipelining or not + //remove speed test then to avoid random error in CIs + assert.isTrue( + diff[0] > pipelineDiff[0] || (diff[0] === pipelineDiff[0] && diff[1] > pipelineDiff[1]), + "error - time to insert 1000 : std=" + Math.floor(diff[0] * 1000 + diff[1] / 1000000) + "ms pipelining=" + Math.floor(pipelineDiff[0] * 1000 + pipelineDiff[1] / 1000000) + "ms" - ); + ); + } done(); }); });