Долгое выполнение запроса при сортировке по integer атрибутам

Добрый день!

Недавно перешёл со сфинкса на мантикору. Столкнулся с тем, что при сортировке по любому из integer полей индекса запрос выполняется около 2 минут, а если не указывать сортировку в запросе, то несколько секунд (131 секунда и 5 секунд).

С мантикорой работаю через manticoresearch-php.

Изначально создаю RT таблицу с такими полями

[
            'id'                => ['type' => 'bigint'],
            'article_id'        => ['type' => 'bigint'],
            'journal_id'        => ['type' => 'bigint'],
            'publisher_id'      => ['type' => 'bigint'],

            'name'          => ['type' => 'text'],
            'authors'       => ['type' => 'text'],

            'published_int'         => ['type' => 'integer'],
            'year'                  => ['type' => 'integer'],

            'subjects'      => ['type' => 'json'],
            'countries'     => ['type' => 'json'],
]

и опциями

[
            'min_infix_len' => 2,
            'min_word_len' => 1
]

В таблице примерно 100 миллионов записей, всё находится на одном сервере.

Запрос такой

            SELECT article_id, name, WEIGHT() AS w
            FROM articles
            WHERE MATCH('@(name,authors) cobalt')
            ORDER BY
                published_int DESC,
                article_id DESC
            LIMIT 25
            OFFSET 0
            OPTION MAX_MATCHES=200

соответственно, если убираю

            ORDER BY
                published_int DESC,
                article_id DESC

то всё работает достаточно быстро.

Покажите SHOW META от тормозного запроса.

25 rows in set (1 min 31.40 sec)
— 25 out of 97225 results in 1m 31.4s —

mysql> SHOW META;

+----------------+--------+
| Variable_name  | Value  |
+----------------+--------+
| total          | 25     |
| total_found    | 97225  |
| total_relation | eq     |
| time           | 91.395 |
| keyword[0]     | cobalt |
| docs[0]        | 97225  |
| hits[0]        | 100939 |
+----------------+--------+

7 rows in set (0.00 sec)

А это, если убрать ORDER BY из запроса
mysql> SHOW META;

+----------------+--------+
| Variable_name  | Value  |
+----------------+--------+
| total          | 25     |
| total_found    | 97225  |
| total_relation | eq     |
| time           | 2.801  |
| keyword[0]     | cobalt |
| docs[0]        | 82992  |
| hits[0]        | 85922  |
+----------------+--------+

7 rows in set (0.01 sec)

Попробую повторить локально на таблице с такой же схемой и похожей частотой слова.

Не повторяется на такой таблице:

mysql> select count(*) from test;
+-----------+
| count(*)  |
+-----------+
| 100000000 |
+-----------+
1 row in set (0.00 sec)
--- 1 out of 1 results in 0ms ---
mysql> SELECT article_id, name, WEIGHT() AS w FROM test WHERE MATCH('@(name,authors) sad') ORDER BY published_int DESC, article_id DESC LIMIT 25 OFFSET 0 OPTION MAX_MATCHES=200; show meta;                 
+------------+------------------+------+
| article_id | name             | w    |
+------------+------------------+------+
|  416361596 | Hot. Rich south. | 1530 |
|  416361596 | Hot. Rich south. | 1530 |
|  416361596 | Hot. Rich south. | 1530 |
|  416361596 | Hot. Rich south. | 1530 |
|  416361596 | Hot. Rich south. | 1530 |
|  416361596 | Hot. Rich south. | 1530 |
|  416361596 | Hot. Rich south. | 1530 |
|  416361596 | Hot. Rich south. | 1530 |
|  416361596 | Hot. Rich south. | 1530 |
|  416361596 | Hot. Rich south. | 1530 |
|  416361596 | Hot. Rich south. | 1530 |
|  416361596 | Hot. Rich south. | 1530 |
|  416361596 | Hot. Rich south. | 1530 |
|  416361596 | Hot. Rich south. | 1530 |
|  416361596 | Hot. Rich south. | 1530 |
|  416361596 | Hot. Rich south. | 1530 |
|  416361596 | Hot. Rich south. | 1530 |
|  416361596 | Hot. Rich south. | 1530 |
|  416361596 | Hot. Rich south. | 1530 |
|  416361596 | Hot. Rich south. | 1530 |
|  416361596 | Hot. Rich south. | 1530 |
|  416361596 | Hot. Rich south. | 1530 |
|  416361596 | Hot. Rich south. | 1530 |
|  416361596 | Hot. Rich south. | 1530 |
|  416361596 | Hot. Rich south. | 1530 |
+------------+------------------+------+
25 rows in set (0.09 sec)
--- 25 out of 7498900 results in 91ms ---

+----------------+---------+
| Variable_name  | Value   |
+----------------+---------+
| total          | 25      |
| total_found    | 7498900 |
| total_relation | eq      |
| time           | 0.091   |
| keyword[0]     | sad     |
| docs[0]        | 7498900 |
| hits[0]        | 7828200 |
+----------------+---------+
7 rows in set (0.00 sec)

При этом у вас сортируетс 97225 документов, а тут 7498900.

Таблица генерилась вот так:

manticore-load \
--drop \
--batch-size=1000 \
--threads=5 \
--total=1000000 \
--init="CREATE TABLE test(article_id bigint, journal_id bigint, publisher_id bigint, name text, authors text, published_int int, year int, subjects json, countries json) min_infix_len='2' min_word_len='1'" \
--load="INSERT INTO test(id,article_id,journal_id,publisher_id,name,authors,published_int,year,subjects,countries) VALUES(0,<int/1/1000000000>,<int/1/1000000000>,<int/1/1000000000>,'<text/1/10>','<text/1/20>',<int/1/1000000>,<int/1000/2025>,'{\"a\":<int/1/10>}','{\"b\":<int/1/10>}')"

и затем догонялась до 100 млн вот так в N потоков:

for n in `seq 1 14`; do echo $n; mysql -P9306 -h0 < /tmp/manticore_load_84ff47184402ef9506cc260953d95e12; done;

Чтоб понять, почему у вас так медленно, покажите:

  • версию мантикоры
  • вывод set profiling=1; ВАШ ЗАПРОС; show profile; show meta

mysql> SET PROFILING=1;
Query OK, 0 rows affected (0.00 sec)

mysql> SELECT article_id, name, WEIGHT() AS w FROM articles WHERE MATCH(‘@(name,authors) cobalt’) ORDER BY year DESC, article_id DESC LIMIT 25 OFFSET 0 OPTION MAX_MATCHES=200;

На всякий случай добавил результат поиска, вижу, что вы в запросе ищете “sad”, а в результате выдаются фразы, которые искомую строку не содержат.

+------------+-------------------------------------------------------------------------------------------------------------------------------------------------------+------+
| article_id | name                                                                                                                                                  | w    |
+------------+-------------------------------------------------------------------------------------------------------------------------------------------------------+------+
|  129719828 | mxene ru doping co enhanced hydrogen evolution reaction performance cobalt pyridinedicarboxylic coordinated polymer                                   | 1586 |
|  129719789 | hydroxyapatite loaded cobalt nanoparticles catalyze 5 hydroxymethylfurfural green oxidation 2 5 furandicarboxylic acid mild conditions                | 1586 |
|  129716692 | fpna aspergillus fumigatus homolog human ferroportin mediates resistance nickel cobalt gallium function iron homeostasis                              | 1586 |
|  129715962 | toxicological alterations induced subacute exposure cobalt oxide nanoparticles aged rats behavioral biochemical molecular histopathological evidence  | 1586 |
|  129715168 | impact rare earth ions ce la sm doping lattice structure magnetic characteristics barium cobalt nano ferrite                                          | 1586 |
|  129700416 | synthesis characterization lithium nickel cobalt aluminum cathode material beverage can waste extracts                                                | 1586 |
|  129700365 | structural magnetic antibacterial investigation natural iron based cobalt ferrite nanoparticles co precipitation                                      | 1586 |
|  129695122 | pulse lavage electrical fields remove biofilms cobalt chrome surfaces vitro study                                                                     | 1586 |
|  129694187 | multilayer core sheath structured nickel wire copper oxide cobalt oxide composite highly sensitive non enzymatic glucose sensor                       | 1586 |
|  129692691 | b c6f5 3 regulated selectivity aryl alkene hydrosilylation catalyzed p c chelate cobalt i complex                                                     | 1586 |
|  129692592 | integration cds nanoparticles molecular cobalt catalysts metal organic frameworks highly efficient photocatalytic amine oxidation                     | 1586 |
|  129692564 | cobalt embedded metal covalent organic frameworks co2 photoreduction                                                                                  | 1586 |
|  129692513 | electron coupling effect modulating d band center asymmetric cobalt single atom sites electrocatalytic oxygen reduction                               | 1586 |
|  129691630 | la doped cobalt spinel oxygen evolution catalyst electrospun fiber efficient water decomposition acid electrolyte                                     | 1586 |
|  129690005 | cobalt substitution impact structural modifications capacitive contributions bivo4 nanorods promising pseudocapacitors electrode applications         | 1586 |
|  129687789 | cobalt ii nickel ii copper ii 2 thio barbiturates imidazole based complex salts synthesis structure physicochemical biological properties             | 1586 |
|  129687780 | alternating electrodeposition fabrication graphene buffered nickel cobalt layered double hydroxide supercapacitor electrodes superior rate capability | 1586 |
|  129687590 | state art review propane dehydrogenation well defined non noble metal cobalt catalysts                                                                | 1586 |
|  129687454 | synthesis porous volcanic tuff based geopolymer nickel cobalt removal                                                                                 | 1586 |
|  129685919 | thermodynamic investigation impact oxidized copper cobalt copper sulfide ores stream mixture toward dissolution cu co                                 | 1586 |
|  129684801 | phase transition amorphous cobalt hydroxide crystalline cobalt oxides electron beam irradiation                                                       | 1619 |
|  129683631 | enantioselective c h annulations enabled nickel cobalt electrocatalysed c h activation catalyst controlled chemodivergence                            | 1586 |
|  129677470 | carbon coated cobalt catalyzed hydrodeoxygenation lipids alcohols                                                                                     | 1586 |
|  129677258 | nano cobalt loaded porous carbon derived waste plastic efficient persulfate activation tetracycline degradation                                       | 1586 |
|  129676683 | synthesis alkenyl nitriles bidentate cobalt catalyzed acceptorless dehydrogenation coupling alcohols nitriles                                         | 1586 |
+------------+-------------------------------------------------------------------------------------------------------------------------------------------------------+------+

25 rows in set (1 min 25.94 sec)
— 25 out of 97225 results in 1m 25.9s —

mysql> SHOW PROFILE;

+---------------+------------+----------+---------+
| Status        | Duration   | Switches | Percent |
+---------------+------------+----------+---------+
| unknown       | 0.000291   | 30       | 0.00    |
| local_df      | 0.769231   | 1        | 0.09    |
| local_search  | 0.000154   | 2        | 0.00    |
| sql_parse     | 0.000046   | 1        | 0.00    |
| setup_iter    | 0.000053   | 48       | 0.00    |
| dict_setup    | 0.000022   | 25       | 0.00    |
| parse         | 0.000293   | 25       | 0.00    |
| transforms    | 18.533915  | 38       | 2.06    |
| init          | 0.846537   | 51       | 0.09    |
| read_docs     | 4.390452   | 24       | 0.49    |
| get_docs      | 0.050502   | 3220     | 0.01    |
| filter        | 0.004747   | 3148     | 0.00    |
| rank          | 0.003886   | 9322     | 0.00    |
| qcache_update | 0.008962   | 3051     | 0.00    |
| qcache_final  | 0.000101   | 24       | 0.00    |
| sort          | 874.118831 | 3051     | 97.12   |
| finalize      | 0.000637   | 48       | 0.00    |
| aggregate     | 0.000024   | 3        | 0.00    |
| net_write     | 0.000060   | 2        | 0.00    |
| eval_post     | 1.276849   | 1        | 0.14    |
| eval_getfield | 0.000001   | 1        | 0.00    |
| total         | 900.005594 | 22116    | 0       |
+---------------+------------+----------+---------+

22 rows in set (0.00 sec)

Если в индексе вывести сначала аттрибуты, по которым идёт сортировка, а только после них name и authors, по которым идёт поиск, это может существенно повлиять на скорость?

mysql> SHOW META;

+----------------+--------+
| Variable_name  | Value  |
+----------------+--------+
| total          | 25     |
| total_found    | 97225  |
| total_relation | eq     |
| time           | 85.936 |
| keyword[0]     | cobalt |
| docs[0]        | 97225  |
| hits[0]        | 100939 |
+----------------+--------+

7 rows in set (0.00 sec)

mysql> SHOW VERSION
→ ;

+-----------+----------------------------------+
| Component | Version                          |
+-----------+----------------------------------+
| Daemon    | 7.0.0 92c650401@25013002         |
| Columnar  | columnar 4.0.0 5aa8e43@25012409  |
| Secondary | secondary 4.0.0 5aa8e43@25012409 |
| KNN       | knn 4.0.0 5aa8e43@25012409       |
| Buddy     | buddy v3.17.1+25012911-51758b05  |
+-----------+----------------------------------+

5 rows in set (0.15 sec)

Что-то очень неправильное происходит тут:

| sort          | 874.118831 | 3051     | 97.12   |

У меня так:

| sort          | 1.074807 | 234372   | 43.16   |

т.е. циклов сортировки в 76 раз больше, а занимает это по времени в 816 раз меньше.

А покажите ещё show table articles status.

mysql> SHOW TABLE articles STATUS
→ ;

+-----------------------------+----------------------------------------------------------------------------------------------------------------+
| Variable_name               | Value                                                                                                          |
+-----------------------------+----------------------------------------------------------------------------------------------------------------+
| table_type                  | rt                                                                                                             |
| indexed_documents           | 119113073                                                                                                      |
| indexed_bytes               | 10880066944                                                                                                    |
| ram_bytes                   | 3227655376                                                                                                     |
| disk_bytes                  | 36670857084                                                                                                    |
| disk_mapped                 | 16654112343                                                                                                    |
| disk_mapped_cached          | 3227549696                                                                                                     |
| disk_mapped_doclists        | 0                                                                                                              |
| disk_mapped_cached_doclists | 0                                                                                                              |
| disk_mapped_hitlists        | 0                                                                                                              |
| disk_mapped_cached_hitlists | 0                                                                                                              |
| killed_documents            | 0                                                                                                              |
| killed_rate                 | 0.00%                                                                                                          |
| ram_chunk                   | 0                                                                                                              |
| ram_chunk_segments_count    | 0                                                                                                              |
| disk_chunks                 | 24                                                                                                             |
| mem_limit                   | 134217728                                                                                                      |
| mem_limit_rate              | 33.33%                                                                                                         |
| ram_bytes_retired           | 0                                                                                                              |
| optimizing                  | 0                                                                                                              |
| locked                      | 0                                                                                                              |
| tid                         | 12980                                                                                                          |
| tid_saved                   | 12980                                                                                                          |
| query_time_1min             | {"queries":0, "avg":"-", "min":"-", "max":"-", "pct95":"-", "pct99":"-"}                                       |
| query_time_5min             | {"queries":1, "avg_sec":84.864, "min_sec":84.864, "max_sec":84.864, "pct95_sec":84.864, "pct99_sec":84.864}    |
| query_time_15min            | {"queries":1, "avg_sec":84.864, "min_sec":84.864, "max_sec":84.864, "pct95_sec":84.864, "pct99_sec":84.864}    |
| query_time_total            | {"queries":15, "avg_sec":63.731, "min_sec":0.002, "max_sec":181.940, "pct95_sec":181.940, "pct99_sec":181.940} |
| found_rows_1min             | {"queries":0, "avg":"-", "min":"-", "max":"-", "pct95":"-", "pct99":"-"}                                       |
| found_rows_5min             | {"queries":1, "avg":97225, "min":97225, "max":97225, "pct95":97225, "pct99":97225}                             |
| found_rows_15min            | {"queries":1, "avg":97225, "min":97225, "max":97225, "pct95":97225, "pct99":97225}                             |
| found_rows_total            | {"queries":15, "avg":77780, "min":1, "max":97225, "pct95":97225, "pct99":97225}                                |
+-----------------------------+----------------------------------------------------------------------------------------------------------------+

31 rows in set (0.50 sec)

У меня так. Ничего кардинально отличающегося не видно:

mysql> show table test status;
+-----------------------------+-----------------------------------------------------------------------------------------------------------+
| Variable_name               | Value                                                                                                     |
+-----------------------------+-----------------------------------------------------------------------------------------------------------+
| table_type                  | rt                                                                                                        |
| indexed_documents           | 100000000                                                                                                 |
| indexed_bytes               | 10632583900                                                                                               |
| ram_bytes                   | 7993306160                                                                                                |
| disk_bytes                  | 26496286301                                                                                               |
| disk_mapped                 | 7992470708                                                                                                |
| disk_mapped_cached          | 7993028608                                                                                                |
| disk_mapped_doclists        | 0                                                                                                         |
| disk_mapped_cached_doclists | 0                                                                                                         |
| disk_mapped_hitlists        | 0                                                                                                         |
| disk_mapped_cached_hitlists | 0                                                                                                         |
| killed_documents            | 0                                                                                                         |
| killed_rate                 | 0.00%                                                                                                     |
| ram_chunk                   | 0                                                                                                         |
| ram_chunk_segments_count    | 0                                                                                                         |
| disk_chunks                 | 64                                                                                                        |
| mem_limit                   | 134217728                                                                                                 |
| mem_limit_rate              | 95.00%                                                                                                    |
| ram_bytes_retired           | 0                                                                                                         |
| optimizing                  | 0                                                                                                         |
| locked                      | 0                                                                                                         |
| tid                         | 0                                                                                                         |
| tid_saved                   | 0                                                                                                         |
| query_time_1min             | {"queries":30, "avg_sec":0.000, "min_sec":0.000, "max_sec":0.000, "pct95_sec":0.000, "pct99_sec":0.000}   |
| query_time_5min             | {"queries":150, "avg_sec":0.000, "min_sec":0.000, "max_sec":0.000, "pct95_sec":0.000, "pct99_sec":0.000}  |
| query_time_15min            | {"queries":448, "avg_sec":0.000, "min_sec":0.000, "max_sec":0.000, "pct95_sec":0.000, "pct99_sec":0.000}  |
| query_time_total            | {"queries":6246, "avg_sec":0.000, "min_sec":0.000, "max_sec":0.095, "pct95_sec":0.000, "pct99_sec":0.001} |
| found_rows_1min             | {"queries":30, "avg":1, "min":1, "max":1, "pct95":1, "pct99":1}                                           |
| found_rows_5min             | {"queries":150, "avg":1, "min":1, "max":1, "pct95":1, "pct99":1}                                          |
| found_rows_15min            | {"queries":448, "avg":1, "min":1, "max":1, "pct95":1, "pct99":1}                                          |
| found_rows_total            | {"queries":6246, "avg":2402, "min":1, "max":7498900, "pct95":1, "pct99":1}                                |
+-----------------------------+-----------------------------------------------------------------------------------------------------------+
31 rows in set (0.02 sec)

А если vmstat/dstat’ом посмотреть на систему во время выполнения долгого запроса, то что там происходит? Проц весь занят? Активное I/O?

Вот результат выполнения vmstat 3

procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 7  4 2097148 1360032 264072 40286920    0    0  9702  2866    0    0 41  5 48  6  0
11  3 2097148 901740 275312 40721916    0    0 146027 32597 24129 73341 50  6 35  9  0
 9  2 2097148 575568 286776 41036624    0    0 105047 36155 21632 81402 62  7 25  7  0
 7  7 2097148 420764 297280 41209292    0    0 103928 61808 33030 109191 56  7 27 10  0
 5  2 2097148 532580 298020 41025416    0    0 106045 78111 35996 113108 65  9 17  9  0
Отсюда начинается запрос
22  3 2097148 491604 312300 41068304    0    0 80531 74758 36686 118985 60  7 23 10  0
 8 22 2097148 485292 316092 41063052    0    0 129579 68288 32795 106238 56  8 10 27  0
 6 17 2097148 503756 308300 41060724    0    0 188671 29282 23364 71122 54  7  9 30  0
 6 16 2097148 503244 305336 41069276    0    0 173584 35183 22850 76184 59  7  9 25  0
15 16 2097148 400860 297272 41192716    0    0 209943 29981 23060 73793 51  7 13 30  0
 1 15 2097148 477596 288240 41119304    0    0 192767 34923 23760 76139 56  6  7 31  0
 4 19 2097148 520512 286088 41073000    0    0 156789 26808 20308 67343 64  7  6 22  0
10 22 2097148 486804 279956 41117680    0    0 183760 25990 20583 65764 59  7  8 26  0
 2 20 2097148 425648 273640 41183232    0    0 188807 34222 22967 69810 23  5 23 48  0
 2 21 2097148 512268 268384 41210488    0    0 182573 33808 21431 69242 17  4 30 48  0
 2 20 2097148 432120 261748 41246716    0    0 183107 32173 21613 62748 15  6 34 46  0
 2 23 2097148 438076 252304 41183752    0    0 190989 30678 20893 62091 15  5 20 60  0
 1 29 2097148 410596 243416 41192700    0    0 176141 31855 20453 66040 23  5 27 45  0
 1 27 2097148 407828 241372 41173816    0    0 168477 32029 20635 64723 25  5 15 55  0
34 25 2097148 455704 242960 41042712    0    0 147299 22785 20413 61158 71  7  5 17  0
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 7 29 2097148 467692 242176 41022908    0    0 158889 23884 21090 59970 59  5  5 31  0
38 32 2097148 429408 240096 41024696    0    0 148831 24145 19043 57947 51  7  3 39  0
12 29 2097148 450424 246148 40902996    0    0 114831 49481 29375 92152 67  7  4 23  0
18 25 2097148 696960 230180 39963108    0    0 115035 67522 33349 102302 69  9  2 20  0
20 22 2097148 519716 226332 39704448    0    0 128312 29680 20663 50983 83  7  1  9  0
12 26 2097148 774248 230348 39889744    0    0 129141 26703 18868 51129 79  7  1 12  0
 8 28 2097148 1006848 244440 40369932    0    0 161989 26364 19836 64591 63  8  3 26  0
 8 24 2097148 543764 253712 40850248    0    0 160873 29714 20319 73765 49  6  8 37  0
14 24 2097148 466824 249396 40878892    0    0 188028 31914 22543 74774 48  7  7 38  0
14 21 2097148 480648 249460 40866276    0    0 160769 28014 21160 70688 45  7 10 38  0
 8 26 2097148 454868 248484 40896784    0    0 164555 42867 23699 88504 50  7  7 36  0
10 28 2097148 463072 239048 40880804    0    0 219815 31051 23729 76769 56  6  5 33  0
10 27 2097148 445304 228168 40895196    0    0 200331 29989 23162 74598 57  7  4 32  0
11 24 2097148 427572 226728 40937028    0    0 174051 26530 21796 69343 68  8  3 21  0
19 16 2097148 446856 222880 40983924    0    0 187873 27662 22636 75047 59  7  5 28  0
 8 25 2097148 1741608 230532 41279932    0    0 170493 44207 28335 91444 47  7 10 35  0
 7 17 2097148 1368812 250128 41603472    0    0 109861 60037 30167 97431 72  7  3 18  0
 6 20 2097148 910388 261284 42040116    0    0 145420 33933 22703 77899 65  7  5 23  0
 1 17 2097148 432944 269556 42462340    0    0 163217 30294 22734 71751 65  7  6 22  0
18 14 2097148 500700 263532 42286476    0    0 166471 32973 23346 73913 61  7  7 25  0
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 6 15 2097148 450372 264512 42400020    0    0 147136 26038 21270 65462 66  7  5 22  0
Здесь заканчивается
15  2 2097148 507020 268648 42702144    0    0 149812 23243 20569 55056 81  9  5  5  0
10  4 2097148 402296 271416 42728940    0    0 121940 26752 19712 65677 67  8 15 11  0
16  2 2097148 509104 266212 42552720    0    0 88275 26776 19703 59845 81  7  9  3  0
13  1 2097148 404196 276676 42634980    0    0 69413 55731 26114 81502 79  6 11  4  0
18  3 2097148 493212 273904 42557604    0    0 93419 22750 19225 54491 83  7  8  3  0
11  1 2097148 463300 276360 42594732    0    0 102615 26420 20101 62079 77  7 12  4  0

Резульаты iostat или dstat немного позже пришлю.

На всякий случай напишу, что manticore работает в docker, хотя вроде это никак не должно влиять.

По iowait видно, что I/O зашкаливает. Вероятно памяти не хватает и ОС постоянно подгружает разные страницы в память в рамках mmap’а файла атрибутов. Можете попробовать увеличить память или попробовать columnar для тех полей, по которым сортируете.

disk_mapped_cached          | 3227549696

3227549696 = 3.006 GB - подозрительно круглое число.

Нет там лимита по памяти 3 гига при запуске докера?

Лимита по памяти не выставляли, для проверки сделал ещё пару тестов, получил значение на гиг больше:
disk_mapped_cached | 4013801472

Сейчас перенесли индексы мантикоры на SSD диски, время выполнения запросов упало до 11 секунд:
--- 25 out of 97225 results in 11s 802ms ---
то есть стало почти на порядок быстрее.

Быстрее стали выполняться

| transforms    | 1.632375   | 38       | 1.37    |
| sort          | 117.298311 | 3051     | 98.39   |

было 18, и 874 секунды соответственно.

Но с sort всё равно что-то не то.

Подскажите, пожалуйста, если хочу дать мантикоре больше памяти, нужно выставить
access_plain_attrs = mlock
access_blob_attrs = mlock
Как указано здесь
https://manticoresearch.com/blog/mcl/

То есть, через php клиент при создании индекса в опциях указываю

[
'min_infix_len' => 2,
'min_word_len' => 1,
'access_plain_attrs' => 'mlock',
'access_blob_attrs' => 'mlock',
]

а если хочу сделать аттрибут колоночным, то в том же клиенте указываю опцию engine
'year' => ['type' => 'integer', 'engine' => 'columnar'],
предварительно установив библиотеку?

То есть, через php клиент при создании индекса в опциях указываю

Да. mlock

а если хочу сделать аттрибут колоночным, то в том же клиенте указываю опцию engine
‘year’ => [‘type’ => ‘integer’, ‘engine’ => ‘columnar’],
предварительно установив библиотеку?

Да, верно.