Медленный процесс автооптимизации индекса с блокировкой insert, update и select запросов во время автооптимизации.

Имеется 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

Какая версия мантикоры? Можно:

  • полный seachd log
  • query log
  • вывод show threads option format=all в момент зависших запросов на запись
  • вывод select * from @@system.sessions в момент зависших запросов на запись
  • вывод dstat 1 вокруг минут, когда идёт оптимизация

?

Manticore 6.3.0 1811a9efb@24052209 (columnar 2.3.0 88a01c3@24052206) (secondary 2.3.0 88a01c3@24052206) (knn 2.3.0 88a01c3@24052206)

Вот свежие дополнительный данные. Ситуация повторилась сегодня 29.06 в 12:03 (MSK)

searchd.log

[Sat Jun 29 12:03:58.161 2024] [7328] rt: table messages: diskchunk 4562(17), segments 32  saved in 1.348331 (1.360492) sec, RAM saved/new 127505494/44497 ratio 0.950000 (soft limit 127506841, conf limit 134217728)
[Sat Jun 29 12:06:51.774 2024] [7335] rt: table messages: optimized progressive chunk(s) 17 ( left 16 ) in 2m 53.6s

query.log
запись в индекс ведется через очередь с двумя воркерами поэтому зависших update запроса только два + 1 select через mysql клиент
в 12:06:51

/* Sat Jun 29 12:03:58.028 2024 conn 6797881 (176.99.14.126:58698) real 0.000 */ update messages set status='delivered' where id=394174322;
/* Sat Jun 29 12:03:58.042 2024 conn 6797881 (176.99.14.126:58698) real 0.000 */ update messages set status='sent' where id=394174540;
/* Sat Jun 29 12:03:58.073 2024 conn 6797881 (176.99.14.126:58698) real 0.000 */ update messages set status='delivered' where id=394174318;
/* Sat Jun 29 12:03:58.101 2024 conn 6797884 (176.99.14.126:58730) real 0.000 */ update messages set status='sent' where id=394174541;
/* Sat Jun 29 12:03:58.131 2024 conn 6797884 (176.99.14.126:58730) real 0.000 */ update messages set status='delivered' where id=394173593;
/* Sat Jun 29 12:03:58.178 2024 conn 6797881 (176.99.14.126:58698) real 0.024 */ update messages set status='sent' where id=394174542;
/* Sat Jun 29 12:06:51.779 2024 conn 6797881 (176.99.14.126:58698) real 173.599 */ update messages set status='seen' where id=394169778;
/* Sat Jun 29 12:06:51.779 2024 conn 6797884 (176.99.14.126:58730) real 173.568 */ update messages set status='seen' where id=394170011;
/* Sat Jun 29 12:06:51.780 2024 conn 7530864 (127.0.0.1:44562) real 159.868 wall 159.868 found 1 */ SELECT id FROM messages WHERE id=393973266;
/* Sat Jun 29 12:06:51.780 2024 conn 6797881 (176.99.14.126:58698) real 0.000 */ update messages set status='sent' where id=394174552;
/* Sat Jun 29 12:06:51.780 2024 conn 6797884 (176.99.14.126:58730) real 0.000 */ update messages set status='sent' where id=394174553;
/* Sat Jun 29 12:06:51.780 2024 conn 6797881 (176.99.14.126:58698) real 0.000 */ update messages set status='delivered' where id=394174432;
/* Sat Jun 29 12:06:51.781 2024 conn 6797881 (176.99.14.126:58698) real 0.000 */ update messages set status='delivered' where id=394174448;
/* Sat Jun 29 12:06:51.781 2024 conn 6797884 (176.99.14.126:58730) real 0.000 */ update messages set status='delivered' where id=394174421;
/* Sat Jun 29 12:06:51.781 2024 conn 6797884 (176.99.14.126:58730) real 0.000 */ update messages set status='delivered' where id=394173533;

show threads option format=all 12:04:16

TID     Name            Proto   State   Connection from ConnID  This/prev job time      Jobs done   Thread status   Chain   Info
7327    work_0                  -                       -1      27us (prev)             3764828     idling
7328    work_1                  -                       -1      28us (prev)             3764357     idling
7329    work_2                  -                       -1      17us (prev)             3764908     idling
7330    work_3          mysql   query   127.0.0.1:44566 7531116 152us                   3762403     working         Conn    show threads option format=all
7331    work_4                  -                       -1      18us (prev)             3757978     idling
7332    work_5                  -                       -1      40us (prev)             3760548     idling
7333    work_6                  -                       -1      27us (prev)             3766397     idling
7334    work_7                  -                       -1      30us (prev)             3766339     idling
7335    work_8                  -                       -1      23us (prev)             3765015     idling
7336    work_9                  -                       -1      26us (prev)             3764893     idling
7337    work_10                 -                       -1      26us (prev)             3761065     idling
7338    work_11                 -                       -1      16us (prev)             3764069     idling
7339    work_12                 -                       -1      37us (prev)             3758375     idling
7340    work_13                 -                       -1      24us (prev)             3758194     idling
7341    work_14                 -                       -1      39us (prev)             3760344     idling
7342    work_15                 -                       -1      19us (prev)             3765904     idling
7343    work_16                 -                       -1      14us (prev)             3765338     idling
7344    work_17                 -                       -1      38us (prev)             3763278     idling
7345    work_18                 -                       -1      46us (prev)             3763866     idling
7346    work_19                 -                       -1      19s                     3762643     working         Mini    SYSTEM OPTIMIZE
7348    TickPool_0              -                       -1      23us (prev)             0           idling          Listen  tick:  2520160  works:  0  state:  in polling
7349    TickPool_1              -                       -1      22us (prev)             0           idling          Listen  tick:  4052314  works:  0  state:  in polling
7350    TickPool_2              -                       -1      7us (prev)              0           idling          Listen  tick:  2720296  works:  0  state:  in polling
7351    TickPool_3              -                       -1      4us (prev)              0           idling          Listen  tick:  4236310  works:  1  state:  in polling
7352    TickPool_4              -                       -1      16us (prev)             0           idling          Listen  tick:  6184402  works:  0  state:  in polling
7353    TickPool_5              -                       -1      14us (prev)             0           idling          Listen  tick:  5247778  works:  0  state:  in polling
7354    TickPool_6              -                       -1      25us (prev)             0           idling          Listen  tick:  7753751  works:  0  state:  in polling
7355    TickPool_7              -                       -1      2us (prev)              0           idling          Listen  tick:  8918917  works:  1  state:  in polling
7356    TickPool_8              -                       -1      3us (prev)              0           idling          Listen  tick:  7762209  works:  1  state:  in polling
7357    TickPool_9              -                       -1      23us (prev)             0           idling          Listen  tick:  7934630  works:  0  state:  in polling
7358    TickPool_10             -                       -1      3us (prev)              0           idling          Listen  tick:  9507246  works:  0  state:  in polling
7359    TickPool_11             -                       -1      34us (prev)             0           idling          Listen  tick:  9453600  works:  0  state:  in polling
7360    TickPool_12             -                       -1      23us (prev)             0           idling          Listen  tick:  10954273  works:  0  state:  in polling
7361    TickPool_13             -                       -1      3us (prev)              0           idling          Listen  tick:  11369936  works:  1  state:  in polling
7362    TickPool_14             -                       -1      23us (prev)             0           idling          Listen  tick:  8967616  works:  0  state:  in polling
7347    Timer                   -                       -1      -                       0           idling

select * from @@system.sessions 12:04:16

id      proto   state           host                    connid  killed  last cmd time   last cmd
2       mysql   query           176.99.14.126:58730     6797884 0       19s ago         update messages set status='seen' where id=394170011
3       mysql   net_idle        176.99.14.126:49348     7518616 0       2843w ago
4       mysql   net_idle        176.99.14.126:50428     7518662 0       2843w ago
5       mysql   net_idle        176.99.14.126:52746     7518746 0       2843w ago
6       mysql   net_idle        176.99.14.126:35318     7522022 0       2843w ago
7       mysql   net_idle        176.99.14.126:43972     7524845 0       2843w ago
8       mysql   net_idle        176.99.14.126:42174     7525761 0       2843w ago
9       mysql   net_idle        176.99.14.126:51686     7526981 0       2843w ago
10      mysql   net_idle        176.99.14.126:52604     7527003 0       2843w ago
11      mysql   net_idle        176.99.14.126:35008     7529157 0       2843w ago
12      mysql   net_idle        176.99.14.126:55676     7529892 0       2843w ago
13      mysql   net_idle        176.99.14.126:33646     7530119 0       2843w ago
14      mysql   net_idle        176.99.14.126:38330     7530243 0       2843w ago
15      mysql   net_idle        176.99.14.126:44394     7530477 0       2843w ago
16      mysql   net_idle        176.99.14.126:49779     7530654 0       2843w ago
17      mysql   net_idle        176.99.14.126:54784     7530822 0       2843w ago
18      mysql   net_idle        176.99.14.126:54798     7530824 0       2843w ago
19      mysql   query           127.0.0.1:44562         7530864 0       5s ago          select id from messages where id = 393973266
21      mysql   query           127.0.0.1:44568         7531117 0       163us ago       select * from @@system.sessions
20      mysql   net_idle        176.99.14.126:35134     7531110 0       2843w ago

dstat 1 начиная с 12:04:16 в течение 3-x минут

----total-cpu-usage---- -dsk/total- -net/total- ---paging-- ---system--
usr sys idl wai hiq siq| read  writ| recv  send|  in   out | int   csw 
  1   0  99   0   0   0|2153k 3942k|   0     0 |   0     0 |2330  2429 
 12   1  87   0   0   0|  34M 4096B|  72k   36k|   0     0 |5698  4069 
 12   1  87   0   0   0|  32M   91k|  44k   16k|   0     0 |4297  2709 
 12   2  86   0   0   0|2176k    0 |  56k   23k|   0     0 |5313  3161 
 12   1  87   0   0   0|  43M    0 |  57k   30k|   0     0 |5334  3591 
 12   1  87   0   0   0|  41M  147k|  61k   29k|   0     0 |5666  3572 
 12   1  87   0   0   0|  41M   56k|  62k   31k|   0     0 |5850  3761 
 12   1  87   0   0   0|  36M   59k|  64k   30k|   0     0 |5881  3650 
 12   1  87   0   0   0|  32M    0 |  53k   23k|   0     0 |4570  2964 
 12   1  87   0   0   0|  35M    0 |  58k   23k|   0     0 |4830  3071 
 11   1  87   1   0   0|  27M  102M|  62k   32k|   0     0 |5057  4137 
 10   3  83   4   0   0|1304k  868M|  55k   25k|   0     0 |6495  5400 
  2   2  84  13   0   0|4624k 1004M|  56k   26k|   0     0 |5801  6798 
  3   1  86  10   0   1|7692k  988M|  59k   27k|   0     0 |5312  4354 
 12   1  87   0   0   0|  32M 4096B|  63k   31k|   0     0 |5360  3664 
 12   1  87   0   0   0|  32M    0 |  61k   26k|   0     0 |5157  3346 
 12   1  87   0   0   0|  32M    0 |  57k   25k|   0     0 |4940  3289 
 12   1  87   0   0   0|  34M  192k|  54k   21k|   0     0 |5052  3054 
 11   2  86   1   0   0|  31M  124M|  52k   23k|   0     0 |5544  3457 
  7   1  87   5   0   0|  17M  276M|  57k   27k|   0     0 |4500  3614 
 12   1  87   0   0   0|  20M    0 |  69k   35k|   0     0 |4856  3899 
 12   1  87   0   0   0|  11M    0 |  65k   30k|   0     0 |5376  3661 
 12   1  87   0   0   0|  25M  107k|  59k   29k|   0     0 |4734  3506 
 12   1  87   0   0   0|  26M    0 |  62k   28k|   0     0 |4551  3443 
 12   1  87   0   0   0|  27M   32k|  56k   25k|   0     0 |4730  3259 
 12   1  87   0   0   0|  25M    0 |  59k   30k|   0     0 |4692  3453 
 12   1  87   0   0   0|  23M    0 |  56k   27k|   0     0 |4780  3377 
 12   0  87   0   0   0|  17M   51k|  65k   31k|   0     0 |4560  3638 
 12   1  87   0   0   0|2432k    0 |  56k   26k|   0     0 |5528  3347 
 12   1  87   0   0   0|  33M    0 |  55k   36k|   0     0 |4799  3171 
 12   1  87   0   0   0|  26M   32k|  43k   14k|   0     0 |4896  2483 
 12   1  87   0   0   0|  29M   35k|  70k   36k|   0     0 |5344  3998 
 12   0  87   0   0   0|  19M   67k|  47k   16k|   0     0 |4156  2678 
 12   1  87   0   0   0|  23M    0 |  65k   32k|   0     0 |5393  3871 
 12   1  87   0   0   0|  18M    0 |  66k   29k|   0     0 |5099  3675 
 12   1  87   0   0   0|  13M    0 |  63k   25k|   0     0 |4755  3438 
 12   1  87   0   0   0|  14M   56k|  62k   24k|   0     0 |4905  3469 
 12   1  87   0   0   0|  24M   59k|  72k   32k|   0     0 |4931  4015 
 12   1  87   0   0   0|  29M    0 |  73k   34k|   0     0 |5299  4089 
 12   1  87   0   0   0|  23M    0 |  68k   26k|   0     0 |4903  3471 
 12   1  87   0   0   0|  27M    0 |  54k   23k|   0     0 |4779  3222 
 12   1  87   0   0   0|  23M    0 |  69k   28k|   0     0 |4861  3636 
 12   1  87   0   0   0|  24M   83k|  70k   33k|   0     0 |5048  4112 
 12   1  87   0   0   0|7168k    0 |  67k   29k|   0     0 |5452  3757 
  7   1  87   6   0   0|  17M  394M|  52k   16k|   0     0 |4649  2975 
 11   1  83   5   0   0|  27M  213M|  34k 1584B|   0     0 |3594  1583 
 12   1  87   0   0   0|  22M   27k|  41k   11k|   0     0 |3683  2219 
 12   1  87   0   0   0|  21M  135k|  88k   54k|   0     0 |5865  5326 
 12   1  87   0   0   0|  20M   39k|  71k   35k|   0     0 |5174  4399 
 12   1  87   0   0   0|  25M    0 |  76k   36k|   0     0 |5262  4324 
  6   1  86   6   0   0|  14M  669M|  65k   28k|   0     0 |5565  4941 
  5   1  85   8   0   0|6672k  996M|  58k   22k|   0     0 |5814  5128 
 12   2  84   2   0   0|9860k  447M|  69k   33k|   0     0 |6281  4658 
 12   1  87   0   0   0|  28M 4096B|  62k   23k|   0     0 |4802  3379 
 12   1  87   0   0   0|  25M   32k|  60k   31k|   0     0 |4769  3838 
 12   0  87   0   0   0|  22M    0 |  61k   23k|   0     0 |4570  3278 
 12   1  87   0   0   0|  22M    0 |  60k   27k|   0     0 |4980  3460 
 12   1  87   0   0   0|  22M   55k|  68k   26k|   0     0 |4867  3534 
 12   1  87   0   0   0|  26M 4096B|  61k   23k|   0     0 |4484  3328 
 12   1  87   0   0   0|5760k    0 |  69k   44k|   0     0 |5269  3890 
 12   1  87   0   0   0|  32M   32k|  62k   31k|   0     0 |4794  3672 
 12   1  87   0   0   0|  31M    0 |  53k   22k|   0     0 |4913  3023 
 12   1  87   0   0   0|  28M   82k|  57k   26k|   0     0 |5073  3542 
 12   1  87   0   0   0|  32M 4096B|  63k   23k|   0     0 |4952  3346 
 12   1  87   0   0   0|  33M    0 |  65k   27k|   0     0 |5368  3595 
 12   1  87   0   0   0|  35M    0 |  61k   27k|   0     0 |5047  3431 
 12   1  87   0   0   0|  21M   54k|  58k   28k|   0     0 |5091  3523 
 12   1  87   0   0   0|  17M   55k|  68k   30k|   0     0 |5065  3826 
 12   1  87   0   0   0|  25M 4096B|  60k   26k|   0     0 |4572  3549 
 12   0  87   0   0   0|  20M    0 |  71k   30k|   0     0 |4800  3779 
 12   1  87   0   0   0|  23M    0 |  68k   32k|   0     0 |4940  3924 
 12   0  87   0   0   0|  25M   56k|  71k   32k|   0     0 |4839  3912 
 12   1  87   0   0   0|  24M   47k|  66k   28k|   0     0 |5003  3706 
 12   1  87   0   0   0|  20M 4096B|  61k   24k|   0     0 |4877  3313 
 12   1  87   0   0   0|6784k    0 |  71k   37k|   0     0 |5821  4235 
 12   1  87   0   0   0|  23M    0 |  70k   32k|   0     0 |5073  3876 
 12   1  87   0   0   0|  23M    0 |  64k   32k|   0     0 |4954  3858 
  8   1  81  10   0   0|  14M  413M|  65k   25k|   0     0 |4995  5418 
  7   0  81  11   0   0|  14M  231M|  57k   20k|   0     0 |4547  5670 
 12   1  87   0   0   0|  31M    0 |  70k   30k|   0     0 |5071  3800 
 12   1  87   0   0   0|  33M    0 |  59k   25k|   0     0 |4847  3270 
 12   1  87   0   0   0|  27M   27k|  68k   34k|   0     0 |5937  4024 
 12   1  87   0   0   0|7916k  119k|  68k   33k|   0     0 |5599  4087 
  9   1  84   5   0   0|  26M  291M|  65k   32k|   0     0 |5569  4340 
  6   1  86   7   0   0|  16M  724M|  58k   24k|   0     0 |5368  4786 
  3   1  85  10   0   0|7424k 1005M|  65k   27k|   0     0 |5733  4804 
  8   1  87   5   0   0|  20M  492M|  73k   36k|   0     0 |5514  4455 
 12   1  87   0   0   0|  31M  215k|  67k   28k|   0     0 |5017  3663 
 12   1  87   0   0   0|  31M 4096B|  69k   33k|   0     0 |4994  3983 
 12   1  87   0   0   0|  32M   32k|  71k   45k|   0     0 |5077  4010 
 12   1  87   0   0   0|  33M    0 |  52k   21k|   0     0 |4581  3124 
 12   1  87   0   0   0|  14M    0 |  69k   30k|   0     0 |4841  3760 
 12   1  87   0   0   0|  23M   63k|  64k   26k|   0     0 |4926  3560 
 12   1  87   0   0   0|  29M 4096B|  72k   35k|   0     0 |5426  4078 
 12   1  87   0   0   0|3580k    0 |  60k   24k|   0     0 |4997  3408 
 11   2  87   0   0   0|  93M   32k|  60k   29k|   0     0 |6697  3685 
 11   3  87   0   0   0|   0     0 |  61k   30k|   0     0 |5688  3693 
 12   1  87   0   0   0|  26M  183k|  72k   38k|   0     0 |5197  4297 
 11   1  87   0   0   0|  40M 4096B|  65k   30k|   0     0 |4895  3800 
 12   1  87   0   0   0|  81M    0 |  72k   29k|   0     0 |5360  3701 
 11   2  87   0   0   0| 119M    0 |  60k   23k|   0     0 |5469  3374 
 10   2  87   0   0   0|  92M   43k|  68k   29k|   0     0 |5599  3745 
 10   2  87   0   0   0|  15M  239k|  65k   27k|   0     0 |5149  3687 
 11   2  87   0   0   0|  30M 4096B|  58k   20k|   0     0 |4337  3103 
 12   1  87   0   0   0|  31M    0 |  35k 2847B|   0     0 |3270  1772 
 12   1  87   0   0   0|  49M    0 |  42k 8073B|   0     0 |3547  2135 
 12   1  87   0   0   0|  46M   32k|  67k   31k|   0     0 |4940  3852 
 12   1  87   0   0   0|  45M  151k|  97k   55k|   0     0 |5929  5412 
 12   1  87   0   0   0|  44M 4096B|  60k   24k|   0     0 |4504  3303 
 12   1  87   0   0   0|  45M    0 |  63k   27k|   0     0 |4694  3343 
 12   1  87   0   0   0|  48M    0 |  59k   27k|   0     0 |4529  3334 
  9   1  87   3   0   0|  33M  299M|  63k   26k|   0     0 |5036  3703 
 12   0  87   0   0   0|  45M   36k|  51k   19k|   0     0 |4480  3104 
 12   1  87   0   0   0|  43M   99k|  64k   24k|   0     0 |4763  3351 
 12   1  87   0   0   0|  42M    0 |  58k   23k|   0     0 |4629  3206 
 12   1  87   0   0   0|  57M    0 |  60k   29k|   0     0 |4715  3327 
 12   1  87   0   0   0|  52M    0 |  57k   26k|   0     0 |4682  3246 
 10   1  87   3   0   0|  33M  264M|  57k   22k|   0     0 |4638  3148 
 12   1  87   0   0   0|  43M  103k|  65k   33k|   0     0 |5048  3863 
 12   1  87   0   0   0|  49M    0 |  54k   40k|   0     0 |4509  3313 
 10   1  87   2   0   0|  36M  217M|  55k   26k|   0     0 |4686  3311 
 12   1  87   0   0   0|  46M    0 |  61k   26k|   0     0 |4551  3276 
 11   1  86   2   0   0|  41M  135M|  53k   23k|   0     0 |5135  3172 
  3   2  85  10   0   0|8336k  989M|  65k   29k|   0     0 |5942  7718 
  2   1  86  10   0   0|8080k 1004M|  53k   23k|   0     0 |5737  5302 
  5   1  87   7   0   0|  18M  689M|  62k   28k|   0     0 |5120  4369 
 12   1  87   0   0   0|  47M    0 |  46k   22k|   0     0 |5186  2975 
 12   1  87   0   0   0|  49M    0 |  57k   26k|   0     0 |5233  3225 
 12   1  87   0   0   0|  49M  216k|  57k   25k|   0     0 |5762  3301 
 12   1  87   0   0   0|  44M    0 |  67k   26k|   0     0 |5392  3394 
 12   1  87   0   0   0|  41M   32k|  61k   25k|   0     0 |5230  3447 
 12   1  87   0   0   0|  42M    0 |  63k   27k|   0     0 |5181  3404 
 12   1  87   0   0   0|  46M    0 |  49k   20k|   0     0 |4827  2765 
 12   1  87   0   0   0|  45M   43k|  63k   33k|   0     0 |5459  3891 
 12   1  87   0   0   0|  52M    0 |  61k   25k|   0     0 |4665  3390 
 12   1  87   0   0   0|  48M    0 |  65k   26k|   0     0 |4735  3475 
 12   1  87   0   0   0|  44M   51k|  47k   16k|   0     0 |4269  2745 
 12   1  87   0   0   0|  42M    0 |  58k   24k|   0     0 |4445  3216 
 12   1  87   0   0   0|  45M   43k|  57k   26k|   0     0 |5069  3331 
 12   1  87   0   0   0|  44M    0 |  70k   29k|   0     0 |5022  3708 
 12   1  87   0   0   0|  45M    0 |  50k   20k|   0     0 |4473  2953 
 12   1  87   0   0   0|  43M   56k|  54k   21k|   0     0 |4453  3002 
 12   1  87   0   0   0|  41M    0 |  50k   20k|   0     0 |4354  2857 
 12   1  87   0   0   0|  41M   43k|  57k   23k|   0     0 |4793  3159 
 12   1  87   0   0   0|  41M    0 |  65k   27k|   0     0 |4850  3537 
 12   1  87   0   0   0|  46M    0 |  66k   25k|   0     0 |4798  3368 
 12   1  87   0   0   0|  43M    0 |  66k   31k|   0     0 |5215  3787 
 12   1  87   0   0   0|  44M   32k|  55k   26k|   0     0 |4471  3225 
 12   1  87   0   0   0|  43M   43k|  54k   25k|   0     0 |4980  3321 
 12   1  87   0   0   0|  42M    0 |  61k   43k|   0     0 |4873  3594 
 12   1  87   0   0   0|  46M    0 |  43k   13k|   0     0 |3884  2296 
 12   1  87   0   0   0|  43M   27k|  67k   30k|   0     0 |5063  3683 
 12   1  87   0   0   0|  48M    0 |  73k   34k|   0     0 |5534  4098 
 10   1  87   1   0   0| 137M  106k|  48k   18k|   0     0 |4873  4402 
  1   3  87   9   0   0| 544M 4096B|  60k   32k|   0     0 |9474    12k
  1   8  88   2   0   0| 104M   68M| 285k   78k|   0     0 |7422    15k
  4   2  94   0   0   0|  10M 2351k|1174k  288k|   0     0 |  12k   49k
  4   2  93   0   0   0|3472k 3320k|1278k  348k|   0     0 |  12k   59k
  4   2  95   0   0   0|7740k 3203k|1027k  296k|   0     0 |  11k   49k
  3   1  96   0   0   0|3300k 2803k| 885k  251k|   0     0 |  10k   41k
  3   1  94   1   0   1|1568k  351M| 723k  206k|   0     0 |9351    35k
  0   1  85  13   0   1|  16k 1002M|  73k   28k|   0     0 |5379  6327 
  0   2  87  11   0   1|  20k  998M|  66k   23k|   0     0 |5537  5479 
  0   0  98   1   0   0|   0   199M|  82k   31k|   0     0 |4610  4614 
  0   0  99   0   0   0|   0   128k|  67k   24k|   0     0 |3583  3829 
  0   0  99   0   0   0|   0   136k|  52k 8668B|   0     0 |2304  2347 
  0   0  99   0   0   0| 248k  144k|  82k   19k|   0     0 |3422  3693 
  0   0  99   0   0   0| 336k  192k| 124k   57k|   0     0 |5640  7126 
  0   1  99   0   0   0|1128k  163k| 105k   52k|   0     0 |5607  6759 
  0   0  99   0   0   0|   0   152k|  80k   32k|   0     0 |4133  4757 
  0   0  99   0   0   0|   0   136k|  68k   22k|   0     0 |3415  3692 
  0   0  99   0   0   0|   0   211k|  97k   38k|   0     0 |4465  5293 
  1   0  99   0   0   0|   0   152k|  90k   35k|   0     0 |4810  5007 
  0   0  99   0   0   0| 400k  171k|  84k   31k|   0     0 |4490  4691 
  0   0  99   0   0   0|   0   144k|  71k   22k|   0     0 |3590  3796 
  0   0  99   0   0   0|   0   136k|  80k   28k|   0     0 |4086  4337 
  1   1  99   0   0   0|   0   184k|  81k   30k|   0     0 |4375  4695 
  0   0  99   0   0   0|   0   144k|  80k   27k|   0     0 |4209  4429 
  0   0  99   0   0   0|   0   147k|  89k   33k|   0     0 |4566  4891 
  1   0  99   0   0   0|8192B  200k| 112k   58k|   0     0 |5361  6035 

Так добавлю что запуск оптимизации вручную через sql команду

optimize table messages;  

проходит за 100 мс.

Возможно это важный момент для понимания того что происходит.

правильно ли я понял общий кейс:

  • выполняете update string attr, который блокируется на время выполнения optimize index
  • это в свою очередь блокирует поиски в этот же индекс?

получается пока работает optimize и если случился update string attr - то вообще все операции с индексом блокируются?

получается пока работает optimize и если случился update string attr - то вообще все операции с индексом блокируются?

выглядит так, но я не уверен что именно update блокирует остальные запросы а не блокируются вообще любые запросы на время оптимизации. Более того если верить документации, то такого происходить не должно.
https://manual.manticoresearch.com/Securing_and_compacting_a_table/Compacting_a_table#Throttling-the-IO-impact

During optimization, the RT table being optimized remains online and available for both searching and updates nearly all the time. It is locked for a very brief period when a pair of disk chunks is successfully merged, allowing for the renaming of old and new files and updating the table header.

и еще раз повторюсь - ручной запуск оптимизации “optimize table messages;” проходит за 100 мс. ни разу не наблюдалась большая длительность. медленно проходить только авто оптимизация.

еще раз повторюсь - ручной запуск оптимизации “optimize table messages;” проходит за 100 мс

Возможно он ничего не делает при этом. Попробуйте убедиться, что чанки есть при этом, которые нужно мерджить. И чтоб запустить optimize вручную в синхронном режиме там есть sync=1.

А так, заведите задачу на гитхабе, пожалуйста, возможно баг.

update любых blob атрибутов (строки\mva\json) берет эксклюзивный лок на индекс. Который блокирует любые другие запросы, если при этом сам update становится в очередь и ждет окончания optimize - то по логам все и выглядит как optimize блокирует все.
Ну те optimize + search - нет блокировки, search + update - есть блокировка, но тк update у вас выполняется быстро, то это не заметно. А когда все совпадает - то это становится заметно.

Я бы заменил status атрибут на bool или int (enum) атрибут - тогда update стал бы update plain атрибутов и не было бы никакой блокировки.

Ну или создайте тикет на Github куда выложите воспроизводимый кейс, который можно запустить локально и расследовать поведение, тк текст выше это всего-лишь предположения.

вот только это противоречит документации

Пока попробую отключить авто оптимизацию и производить оптимизацию по расписанию в ночное время.

During optimization, the RT table being optimized remains online and available for both searching and updates nearly all the time.

я не вижу противоречий в документации - описана работа в общем, разные краевые случаи не описываются, чтобы не раздувать документацию

А что такого необычного в моем сценарии использования что это считается краевым (не типичным) случаем?

что вы используете update mva \ string \ json для RT индекса, вместо замены документа - замена документа в RT индексе это не блокирующая операция, которая и подразумевалась как основной режим работы

Воспроизвёл и завёл задачу Don't block UPDATEs by chunk merging · Issue #2361 · manticoresoftware/manticoresearch · GitHub

заменил update на replace, а так же строковые enum на целочисленный - полет нормальный.