Имеется rt индекс на ~400kk записей.
Ежедневно в течение суток производиться ~900k insert и затем по несколько раз update(обновление поля status) для каждой вставленной записи. Записи из индекса не удаляются. Пока производиться небольшое количество select в тестовом режиме.
Периодически в течение дня производиться автооптимизация индекса о чем свидетельствуют записи в searchd.log:
[root@dbm1 ~]# cat /var/log/manticore/searchd.log | grep optim
[Tue Jun 25 10:43:40.397 2024] [7340] rt: table messages: optimized progressive chunk(s) 17 ( left 16 ) in 2m 42.8s
[Tue Jun 25 14:07:59.821 2024] [7344] rt: table messages: optimized progressive chunk(s) 17 ( left 16 ) in 2m 38.2s
[Tue Jun 25 17:46:20.430 2024] [7340] rt: table messages: optimized progressive chunk(s) 17 ( left 16 ) in 2m 40.7s
[Tue Jun 25 19:39:50.694 2024] [7346] rt: table messages: optimized progressive chunk(s) 17 ( left 16 ) in 2m 37.7s
[Tue Jun 25 19:49:03.326 2024] [7338] rt: table messages: optimized progressive chunk(s) 17 ( left 16 ) in 2m 43.7s
[Tue Jun 25 20:24:26.057 2024] [7334] rt: table messages: optimized progressive chunk(s) 17 ( left 16 ) in 2m 42.3s
[Tue Jun 25 21:13:31.884 2024] [7327] rt: table messages: optimized progressive chunk(s) 17 ( left 16 ) in 2m 54.1s
[Wed Jun 26 11:04:38.133 2024] [7334] rt: table messages: optimized progressive chunk(s) 17 ( left 16 ) in 2m 39s
Как видно это процесс занимает ~2 мин. 40 сек. При этом все запросы insert, update, select подвисают в ожидание на это время пока не закончится процесс оптимизации.
Соответственно возникают вопросы. Насколько это нормальная длительность для процесса оптимизации? Почему блокируются (ждут) запросы? Нужна ли вообще оптимизация при указанном сценарии использования? И главное - Как решить эту ситуацию?
Дополнительная информация.
MySQL [(none)]> show table messages status;
+-----------------------------+---------------------------------------------------------------------------------------------------------------+
| Variable_name | Value |
+-----------------------------+---------------------------------------------------------------------------------------------------------------+
| index_type | rt |
| indexed_documents | 390081667 |
| indexed_bytes | 112677162080 |
| ram_bytes | 6140580589 |
| disk_bytes | 111536918268 |
| disk_mapped | 21721505293 |
| disk_mapped_cached | 6067146752 |
| disk_mapped_doclists | 0 |
| disk_mapped_cached_doclists | 0 |
| disk_mapped_hitlists | 0 |
| disk_mapped_cached_hitlists | 0 |
| killed_documents | 80 |
| killed_rate | 0.00% |
| ram_chunk | 73363973 |
| ram_chunk_segments_count | 28 |
| disk_chunks | 16 |
| mem_limit | 134217728 |
| mem_limit_rate | 95.00% |
| ram_bytes_retired | 0 |
| locked | 0 |
| tid | 5436768 |
| tid_saved | 5179608 |
| query_time_1min | {"queries":0, "avg":"-", "min":"-", "max":"-", "pct95":"-", "pct99":"-"} |
| query_time_5min | {"queries":0, "avg":"-", "min":"-", "max":"-", "pct95":"-", "pct99":"-"} |
| query_time_15min | {"queries":0, "avg":"-", "min":"-", "max":"-", "pct95":"-", "pct99":"-"} |
| query_time_total | {"queries":264, "avg_sec":4.485, "min_sec":0.000, "max_sec":134.244, "pct95_sec":23.092, "pct99_sec":110.380} |
| found_rows_1min | {"queries":0, "avg":"-", "min":"-", "max":"-", "pct95":"-", "pct99":"-"} |
| found_rows_5min | {"queries":0, "avg":"-", "min":"-", "max":"-", "pct95":"-", "pct99":"-"} |
| found_rows_15min | {"queries":0, "avg":"-", "min":"-", "max":"-", "pct95":"-", "pct99":"-"} |
| found_rows_total | {"queries":264, "avg":391, "min":0, "max":2043, "pct95":2019, "pct99":2021} |
+-----------------------------+---------------------------------------------------------------------------------------------------------------+
searchd {
# listen = 127.0.0.1:9312
listen = 0.0.0.0:9306:mysql
listen = 127.0.0.1:9307:mysql_vip
# listen = 127.0.0.1:9308:http
log = /var/log/manticore/searchd.log
query_log = /var/log/manticore/query.log
pid_file = /run/manticore/searchd.pid
data_dir = /var/lib/manticore
threads = 20
max_threads_per_query = 8
net_workers = 15
}
[root@dbm1 ~]# cat /proc/cpuinfo | grep "model name"
model name : Intel(R) Xeon(R) CPU E3-1271 v3 @ 3.60GHz
model name : Intel(R) Xeon(R) CPU E3-1271 v3 @ 3.60GHz
model name : Intel(R) Xeon(R) CPU E3-1271 v3 @ 3.60GHz
model name : Intel(R) Xeon(R) CPU E3-1271 v3 @ 3.60GHz
model name : Intel(R) Xeon(R) CPU E3-1271 v3 @ 3.60GHz
model name : Intel(R) Xeon(R) CPU E3-1271 v3 @ 3.60GHz
model name : Intel(R) Xeon(R) CPU E3-1271 v3 @ 3.60GHz
model name : Intel(R) Xeon(R) CPU E3-1271 v3 @ 3.60GHz
RAM 16Gb