You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+51Lines changed: 51 additions & 0 deletions
Original file line number
Diff line number
Diff line change
@@ -139,3 +139,54 @@ If you wish to implement some retry logic atop of `clickhouse::Client` there are
139
139
- For `clickhouse::Client::Insert()` you can reuse a block from previous try, no need to rebuild it from scratch.
140
140
141
141
See https://github.com/ClickHouse/clickhouse-cpp/issues/184 for details.
142
+
143
+
## Asynchronous inserts
144
+
See https://clickhouse.com/docs/en/cloud/bestpractices/asynchronous-inserts for details.
145
+
146
+
⚠ The asynchronous setting is different according to the clickhouse-server version. The below example with clickhouse-server version 24.8.4.13. ⚠
147
+
148
+
> Our strong recommendation is to use async_insert=1,wait_for_async_insert=1 if using asynchronous inserts. Using wait_for_async_insert=0 is very risky because your INSERT client may not be aware if there are errors, and also can cause potential overload if your client continues to write quickly in a situation where the ClickHouse server needs to slow down the writes and create some backpressure in order to ensure reliability of the service.
149
+
150
+
- Only use the SDK, do not need to change the clickhouse-server config. Asynchronous inserts only work if the data is sent as SQL text format. Here is the example.
151
+
```cpp
152
+
// You can specify the asynchronous insert settings by using the SETTINGS clause of insert queries
153
+
clickhouse::Query query("INSERT INTO default.test SETTINGS async_insert=1,wait_for_async_insert=1,async_insert_busy_timeout_ms=5000,async_insert_use_adaptive_busy_timeout=0,async_insert_max_data_size=104857600 VALUES(10,10)");
154
+
client.Execute(query);
155
+
156
+
// Or by SetSetting
157
+
clickhouse::Query query("INSERT INTO default.test VALUES(10,10)");
- Enabling asynchronous inserts at the user level. Ensure your login accout has the privileges about ALTER USER. Then you can use insert_account for asynchronous inserts.
0 commit comments