diff --git a/README.md b/README.md index fe61b3e..26fe73a 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,7 @@ - [0. HTTP POST: `set_node_data`](#0-http-post-set_node_data) - [开发环境](#开发环境) - [技术细节](#技术细节) - - [0. `EdgeManager\EDataCapture\EDataCapture -> set_data()`为什么是以`6507524`为大小chunked的?](#0-edgemanageredatacaptureedatacapture---set_data为什么是以6507524为大小chunked的) + - [0. `EdgeManager\EDataCapture\EDataCapture -> set_data()`为什么是以`6710885`为大小chunked的?](#0-edgemanageredatacaptureedatacapture---set_data为什么是以6710885为大小chunked的) ## API @@ -124,7 +124,7 @@ psql -h localhost -U postgres ## 技术细节 -### 0. `EdgeManager\EDataCapture\EDataCapture -> set_data()`为什么是以`6507524`为大小chunked的? +### 0. `EdgeManager\EDataCapture\EDataCapture -> set_data()`为什么是以`6710885`为大小chunked的? 首先明确一点,根据PostgreSQL的技术架构,条件允许的情况下,**一次性插入多条记录是效率最高的**,比如: @@ -152,12 +152,12 @@ PostgreSQL的文档里没有提及这个话题,因为源码里为SQL语句的 > 安全起见,下述计算假定working_subclass等字段的最大长度均为我们以往约定的45 bytes。 -而此处我源码中的SQL语句头长度为131 bytes(注意末尾空格): +而此处我源码中的SQL语句头长度为138 bytes(注意末尾空格): ![](imgs/sql_head.png) -单个语句体的长度为165 bytes: +单个语句体的长度为160 bytes: ![](imgs/sql_body.png) -所以其最多可以一次性插入`(1073741823 - 131) / 165`条记录,向下取整后即为`6507524`。 +所以其最多可以一次性插入`(1073741823 - 138) / 160`条记录,向下取整后即为`6710885`。 diff --git a/app/EDataCapture/EDataCapture.php b/app/EDataCapture/EDataCapture.php index b4bc288..60d3dfb 100644 --- a/app/EDataCapture/EDataCapture.php +++ b/app/EDataCapture/EDataCapture.php @@ -11,7 +11,7 @@ class EDataCapture { ) {} function set_node_data() { - foreach (array_chunk($this -> post -> param -> data, 6507524, true) as $chunk) { + foreach (array_chunk($this -> post -> param -> data, 6710885, true) as $chunk) { $sql_head = sprintf( "INSERT INTO hf_mes_scada_data_capture_node_data_%s (code, v_%s, device_code, batch) VALUES", diff --git a/imgs/sql_body.png b/imgs/sql_body.png index be8f3cb..c96d713 100644 Binary files a/imgs/sql_body.png and b/imgs/sql_body.png differ diff --git a/imgs/sql_head.png b/imgs/sql_head.png index 4997b98..314cf66 100644 Binary files a/imgs/sql_head.png and b/imgs/sql_head.png differ