Время запроса слишком сильно различается между запусками - PullRequest
0 голосов
/ 19 ноября 2018

Я пытаюсь neo4j поработать над моим проектом, и я решил создать базу данных с данным, предоставленным LDBC .Этот пакет данных поставлялся с этими запросами .

Поэтому я решил выполнить один из этих запросов и собрал его время выполнения (я запустил их с помощью команды cypher-shell).Итак, я собрал эти времена:

    553575, 558724, 556443, 556675, 551304, 555385, 552896

Примечание: Я выбежал первым, потому что, как сказано в этом посте , первый раз, казалось, был из-за всплескав холодное кеширование.

Пока все гладко, я решил создать несколько путей с новыми метками, чтобы база данных увеличилась с 1,5 ГБ до 2,4 ГБ.Я решил снова выполнить запросы, ожидая, что они будут медленнее.К своему удивлению я увидел, что времена были значительно меньше.

    382331, 380566, 405636, 405953, 407277, 391804, 371134, ....

С этой записи .Я ожидал, что они будут примерно одинаковыми (как при первом запуске) и, возможно, больше, но определенно не меньше.

Для целей этого вопроса я использую машину AWS , в частности экземпляр i3.4xlarge (16 vCPU, 122 ГБ ОЗУ и 2x 1,9 ТБ NVMe SSD).Текущая версия Neo4j, которую я использую: 3.3.5 , и я использую cypher-shell , как указано выше.

Кроме того, у меня нет других запущенных программ / процессовна этой машине, поэтому я думаю, что мы можем просто устранить эту проблему (и, несмотря на это, это должно замедлить их, а не ускорить их).

Заранее спасибо, я просто прошу посмотреть, если кто-томожет пролить некоторый свет на эту проблему:)

РЕДАКТИРОВАТЬ:

В изменения, которые я сделал, были добавлены несколько путей между: узлами сообщений и: персонами.Также некоторые между: Person и: Person, некоторые между: TagClass (другой ярлык) и: Person.Кроме того, БД имела индекс для: Tag (имя),: Person (имя),: TagClass (имя) и: Страна (имя), но для выполнения запроса отбросил их.

Оригиналquery:

PROFILE
MATCH (tag:Tag {name: 'Arnold_Schwarzenegger'})
MATCH (tag)<-[:HAS_TAG]-(message1:Message)-[:HAS_CREATOR]->(person1:Person)
MATCH (tag)<-[:HAS_TAG]-(message2:Message)-[:HAS_CREATOR]->(person1)
OPTIONAL MATCH (message2)<-[:LIKES]-(person2:Person)
OPTIONAL MATCH (person2)<-[:HAS_CREATOR]-(message3:Message)<-[like:LIKES]-(p3:Person)
RETURN
  person1.id,
  count(DISTINCT like) AS authorityScore
ORDER BY
  authorityScore DESC,
  person1.id ASC
LIMIT 100

Это профили из обоих прогонов, потому что в пространство добавлен только один план.Уверяю вас, они оба одинаковы (даже при попаданиях в БД, пути расширены, все):

1-й запуск:

| Plan      | Statement   | Version      | Planner | Runtime       | Time   | DbHits | Rows |
| "PROFILE" | "READ_ONLY" | "CYPHER 3.3" | "COST"  | "INTERPRETED" | 556443 | 0      | 100  |

2-й:

| Plan      | Statement   | Version      | Planner | Runtime       | Time   | DbHits | Rows |
| "PROFILE" | "READ_ONLY" | "CYPHER 3.3" | "COST"  | "INTERPRETED" | 371134 | 0      | 100  |

План:

+----------------------+----------------+----------+-----------+-----------+-------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------+
| Operator             | Estimated Rows | Rows     | DB Hits   | Cache H/M | Identifiers                                                                                                                   | Other                                                        |
+----------------------+----------------+----------+-----------+-----------+-------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------+
| +ProduceResults      |            100 |      100 |         0 |       0/0 | anon[349], anon[355], authorityScore, person1.id                                                                              | 0.0                                                          |
| |                        +----------------+----------+-----------+-----------+-------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------+
| +Projection          |            100 |      100 |         0 |       0/0 | anon[349], anon[355], authorityScore, person1.id                                                                              | 0.0; {person1.id : , authorityScore : }                      |
| |                        +----------------+----------+-----------+-----------+-------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------+
| +Top                 |            100 |      100 |         0 |       0/0 | anon[349], anon[355]                                                                                                          | 0.0; 100; anon[355], anon[349]                               |
| |                        +----------------+----------+-----------+-----------+-------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------+
| +EagerAggregation    |         126593 |     1842 |  49948155 |       0/0 | anon[349], anon[355]                                                                                                          | 0.0; anon[349]                                               |
| |                        +----------------+----------+-----------+-----------+-------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------+
| +Apply               |    16025884097 | 49948155 |         0 |       0/0 | person2, anon[219], message3, anon[60], tag, anon[136], p3, message1, anon[167], anon[271], message2, anon[91], person1, like | 0.0                                                          |
| |\                       +----------------+----------+-----------+-----------+-------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------+
| | +Optional          |           7317 | 49948155 |         0 |       0/0 | person2, message3, p3, anon[271], like                                                                                        | 0.0                                                          |
| | |                      +----------------+----------+-----------+-----------+-------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------+
| | +Filter            |           5037 | 49897917 |  49897917 |       0/0 | person2, message3, p3, anon[271], like                                                                                        | 0.0; p3:Person                                               |
| | |                      +----------------+----------+-----------+-----------+-------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------+
| | +Expand(All)       |           5037 | 49897917 | 108680609 |       0/0 | person2, message3, p3, anon[271], like                                                                                        | 0.0; (message3)<-[like:LIKES]-(p3)                           |
| | |                      +----------------+----------+-----------+-----------+-------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------+
| | +Filter            |           7028 | 58782692 |  58782692 |       0/0 | anon[271], message3, person2                                                                                                  | 0.0; message3:Message                                        |
| | |                      +----------------+----------+-----------+-----------+-------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------+
| | +Expand(All)       |           7028 | 58782692 |  58866898 |       0/0 | anon[271], message3, person2                                                                                                  | 0.0; (person2)<-[anon[271]:HAS_CREATOR]-(message3)           |
| | |                      +----------------+----------+-----------+-----------+-------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------+
| | +Argument          |           7317 |   130898 |         0 |       0/0 | person2                                                                                                                       | 0.0                                                          |
| |                        +----------------+----------+-----------+-----------+-------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------+
| +OptionalExpand(All) |           7317 |   130898 |    220191 |       0/0 | person2, anon[219], anon[60], tag, anon[136], message1, anon[167], message2, anon[91], person1                                | 0.0; (message2)<-[anon[219]:LIKES]-(person2); person2:Person |
| |                        +----------------+----------+-----------+-----------+-------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------+
| +NodeHashJoin        |           7317 |    51779 |         0 |       0/0 | anon[60], tag, anon[136], message1, anon[167], message2, anon[91], person1                                                    | 0.0; tag, person1                                            |
| |\                       +----------------+----------+-----------+-----------+-------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------+
| | +Filter            |         341165 |     4241 |      4241 |       0/0 | tag, anon[136], anon[167], message2, person1                                                                                  | 0.0; person1:Person                                          |
| | |                      +----------------+----------+-----------+-----------+-------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------+
| | +Expand(All)       |         341165 |     4241 |      8482 |       0/0 | tag, anon[136], anon[167], message2, person1                                                                                  | 0.0; (message2)-[anon[167]:HAS_CREATOR]->(person1)           |
| | |                      +----------------+----------+-----------+-----------+-------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------+
| | +Filter            |         341165 |     4241 |      4646 |       0/0 | anon[136], message2, tag                                                                                                      | 0.0; message2:Message                                        |
| | |                      +----------------+----------+-----------+-----------+-------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------+
| | +Expand(All)       |         372142 |     4646 |      4647 |       0/0 | anon[136], message2, tag                                                                                                      | 0.0; (tag)<-[anon[136]:HAS_TAG]-(message2)                   |
| | |                      +----------------+----------+-----------+-----------+-------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------+
| | +Filter            |           1608 |        1 |     16080 |       0/0 | tag                                                                                                                           | 0.0; tag.name = {  AUTOSTRING0}                              |
| | |                      +----------------+----------+-----------+-----------+-------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------+
| | +NodeByLabelScan   |          16080 |    16080 |     16081 |       0/0 | tag                                                                                                                           | 0.0; :Tag                                                    |
| |                        +----------------+----------+-----------+-----------+-------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------+
| +Filter              |         341165 |     4241 |      4241 |       0/0 | anon[60], tag, message1, anon[91], person1                                                                                    | 0.0; person1:Person                                          |
| |                        +----------------+----------+-----------+-----------+-------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------+
| +Expand(All)         |         341165 |     4241 |      8482 |       0/0 | anon[60], tag, message1, anon[91], person1                                                                                    | 0.0; (message1)-[anon[91]:HAS_CREATOR]->(person1)            |
| |                        +----------------+----------+-----------+-----------+-------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------+
| +Filter              |         341165 |     4241 |      4646 |       0/0 | anon[60], message1, tag                                                                                                       | 0.0; message1:Message                                        |
| |                        +----------------+----------+-----------+-----------+-------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------+
| +Expand(All)         |         372142 |     4646 |      4647 |       0/0 | anon[60], message1, tag                                                                                                       | 0.0; (tag)<-[anon[60]:HAS_TAG]-(message1)                    |
| |                        +----------------+----------+-----------+-----------+-------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------+
| +Filter              |           1608 |        1 |     16080 |       0/0 | tag                                                                                                                           | 0.0; tag.name = {  AUTOSTRING0}                              |
| |                        +----------------+----------+-----------+-----------+-------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------+
| +NodeByLabelScan     |          16080 |    16080 |     16081 |       0/0 | tag                                                                                                                           | 0.0; :Tag                                                    |
+----------------------+----------------+----------+-----------+-----------+-------------------------------------------------------------------------------------------------------------------------------+------------------------------    --------------------------------+

... Results ...

100 rows available after 371134 ms, consumed after another 0 ms

Примечание: SO Не позволяет мне писать более 30000 символов, поэтому пришлось сократить текст.

1 Ответ

0 голосов
/ 19 ноября 2018

Планировщик Cypher учитывает текущие характеристики БД при принятии решения о том, как выполнить запрос.Любые изменения в БД могут изменить план выполнения, что может сильно повлиять на время.

Лучший способ понять разницу во времени после обновления БД - выполнить сравнение запроса до и после профиль .Не зная, какой запрос вы используете, и особенно без информации о профиле до и после (ни один из которых не был предоставлен), трудно или невозможно понять, почему изменилось время.

Единственное предположение, чтоМожно сделать, имея мало информации, о том, что время изменилось, потому что характеристики БД изменились таким образом, что планировщик изменил план выполнения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...