|
почему так медленно?
|
|||
---|---|---|---|
#18+
во1, count(*) на таблице в 2 млн строк (всего-лишь) занимает 20 сек во2, DELETE занимает 13 сек (удаляет 143336 записей) 13 сек, карл мускуль и count, и DEL делает за 0.5 сек (!!!) запрос по единственному ключу - самый быстрый запрос в БД... и походу этот факт уже никак не тюнится ( (тут следующий запрос - меньше строк = меньше время, но всё равно дохрена!) Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
... |
|||
:
Нравится:
Не нравится:
|
|||
19.05.2019, 15:05 |
|
почему так медленно?
|
|||
---|---|---|---|
#18+
Скрипты на создание таблиц и индексов. Не спец в PostgreSQL, но при види слова "Bitmap" я сразу начинаю подозревает именно его. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.05.2019, 15:58 |
|
почему так медленно?
|
|||
---|---|---|---|
#18+
полудухво1, count(*) на таблице в 2 млн строк (всего-лишь) занимает 20 сек во2, DELETE занимает 13 сек (удаляет 143336 записей) 13 сек, карл мускуль и count, и DEL делает за 0.5 сек (!!!) запрос по единственному ключу - самый быстрый запрос в БД... и походу этот факт уже никак не тюнится ( (тут следующий запрос - меньше строк = меньше время, но всё равно дохрена!) Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
1)включаете track_io_timing в конфиге 2)делате explain (analyze, costs, buffers, timing) ваш запроса Вероятнее всего у вас все время на работу с диском уходит (и диск у вас весьма неторопливый)... в пределе 90.000 строк при случайном доступе с механического диска могут занять до 3х минут (100 iops * 180.000 операций обращения к диску)... так что 9s не так плохо. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.05.2019, 16:58 |
|
почему так медленно?
|
|||
---|---|---|---|
#18+
Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20.
авторread=17112.324 типа без ssd-raid-контроллера за $20000 работать не буду? Maxim BogukВероятнее всего у вас все время на работу с диском уходит (и диск у вас весьма неторопливый)... в пределе 90.000 строк при случайном доступе с механического диска могут занять до 3х минут (100 iops * 180.000 операций обращения к диску)... так что 9s не так плохо. а мускулю это не мешает. Leonid KudryavtsevСкрипты на создание таблиц и индексов. Не спец в PostgreSQL, но при види слова "Bitmap" я сразу начинаю подозревает именно его. не понял, что сделать то надо? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.05.2019, 19:23 |
|
почему так медленно?
|
|||
---|---|---|---|
#18+
полудуха мускулю это не мешает. а кто вам мешает съе.хать взад на любимый вами мускуль ? подозреваю уид у вас лидирующее поле праймари кея, и в мускуле кластеризация по пк приводит к последовательному доступу, а не к произвольному. опять таки в мускуле вроде туча разных движков разной степени производительности и транзакционности. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2019, 10:20 |
|
почему так медленно?
|
|||
---|---|---|---|
#18+
полудуха мускулю это не мешает. Вопрос не в том что мускулю не мешает. Вопрос в том, что ему помогает. А помогает ему быстро выдать count(*) всей таблицы отсутствие условия фильтрации и транзакция dirty read. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2019, 13:46 |
|
почему так медленно?
|
|||
---|---|---|---|
#18+
полудух Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20.
авторread=17112.324 типа без ssd-raid-контроллера за $20000 работать не буду? Maxim BogukВероятнее всего у вас все время на работу с диском уходит (и диск у вас весьма неторопливый)... в пределе 90.000 строк при случайном доступе с механического диска могут занять до 3х минут (100 iops * 180.000 операций обращения к диску)... так что 9s не так плохо. а мускулю это не мешает. Ну я бы начал с сравнения настроек по памяти mysql и postgresql (и по дискам). Если у вас postgresql вообще не настроен то там слезы а не ресурсы ему выделены (для кофеварки) и поэтому все запросы на диск попадают. Еще полезно было бы сделать cluster logs using logs_uid_idx; (операция блокирующая) если вам надо быстро удалять (но поможет разово пока таблица остаентся упорядочена). А так да - хотите работать быстро и не выделяя много памяти под кеш - ставьте нормальный ssd... благо он не 20000 и даже не 1000 стоит. Быстрее чем работает физический диск (а механика это 100-200IOPS в пределе) - база работать не будет... чудес не бывает. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2019, 20:07 |
|
почему так медленно?
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakovполудуха мускулю это не мешает. Вопрос не в том что мускулю не мешает. Вопрос в том, что ему помогает. А помогает ему быстро выдать count(*) всей таблицы отсутствие условия фильтрации и транзакция dirty read. есть ли статистика сравнения потери данных в мускуле и постгресе? зачем он так усложнился, оно того стоило? в мускуле может скорраптиться таблица, да, но её отремонтировать можно в постгресе не может? qwwqа кто вам мешает съе.хать взад на любимый вами мускуль ? поздновато уже, когда FTS прикручен, массивы и прочая лабуда запросы отличаются опять же ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2019, 20:10 |
|
почему так медленно?
|
|||
---|---|---|---|
#18+
Maxim BogukА так да - хотите работать быстро и не выделяя много памяти под кеш - ставьте нормальный ssd... благо он не 20000 и даже не 1000 стоит. Быстрее чем работает физический диск (а механика это 100-200IOPS в пределе) - база работать не будет... чудес не бывает. таки постгрестники (ваш же Космодемьянский) постоянно намекают на контроллер с таблеткой а он таки килобаксами меряется Maxim BogukНу я бы начал с сравнения настроек по памяти mysql и postgresql (и по дискам). Если у вас postgresql вообще не настроен то там слезы а не ресурсы ему выделены (для кофеварки) и поэтому все запросы на диск попадают. shared_buffers = 128MB work_mem = 8MB ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2019, 20:13 |
|
почему так медленно?
|
|||
---|---|---|---|
#18+
полудухMaxim BogukА так да - хотите работать быстро и не выделяя много памяти под кеш - ставьте нормальный ssd... благо он не 20000 и даже не 1000 стоит. Быстрее чем работает физический диск (а механика это 100-200IOPS в пределе) - база работать не будет... чудес не бывает. таки постгрестники (ваш же Космодемьянский) постоянно намекают на контроллер с таблеткой а он таки килобаксами меряется Если у вас механика - да без такого рейд контроллера вам никуда. Если ssd то можно хоть mdraid софтовый (если диски нормальные) и по скорости будет в 1000-10000 быстрее чем механика. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2019, 21:04 |
|
почему так медленно?
|
|||
---|---|---|---|
#18+
полудухесть ли статистика сравнения потери данных в мускуле и постгресе? При чём тут потеря данных? PG как и любой другой транзакционный SQL Server к твоему запросу добавляет условие "из записей видимых данной транзакцией", что и приводит к замедлению. Добавь это условие в MySQL и он точно так же затормозится. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.05.2019, 13:40 |
|
почему так медленно?
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakovполудухесть ли статистика сравнения потери данных в мускуле и постгресе? При чём тут потеря данных? PG как и любой другой транзакционный SQL Server к твоему запросу добавляет условие "из записей видимых данной транзакцией", что и приводит к замедлению. Добавь это условие в MySQL и он точно так же затормозится. при том, что все эти заморочки (и транзакции там на 1м месте) придуманы именно для сохранности данных. Maxim BogukЕсли у вас механика - да без такого рейд контроллера вам никуда. Если ssd то можно хоть mdraid софтовый (если диски нормальные) и по скорости будет в 1000-10000 быстрее чем механика. нет там 1000 HDD READ ~ 120mb/s SSD READ ~ 550 mb/s ... |
|||
:
Нравится:
Не нравится:
|
|||
21.05.2019, 15:21 |
|
почему так медленно?
|
|||
---|---|---|---|
#18+
полудух... нет там 1000 HDD READ ~ 120mb/s SSD READ ~ 550 mb/s таки есть: HDD Average Seek Time - смотреть в описании конкретной модели SSD Seek Time = 0 ... |
|||
:
Нравится:
Не нравится:
|
|||
21.05.2019, 15:23 |
|
почему так медленно?
|
|||
---|---|---|---|
#18+
полудухDimitry Sibiryakovпропущено... При чём тут потеря данных? PG как и любой другой транзакционный SQL Server к твоему запросу добавляет условие "из записей видимых данной транзакцией", что и приводит к замедлению. Добавь это условие в MySQL и он точно так же затормозится. при том, что все эти заморочки (и транзакции там на 1м месте) придуманы именно для сохранности данных. Maxim BogukЕсли у вас механика - да без такого рейд контроллера вам никуда. Если ssd то можно хоть mdraid софтовый (если диски нормальные) и по скорости будет в 1000-10000 быстрее чем механика. нет там 1000 HDD READ ~ 120mb/s SSD READ ~ 550 mb/s Причем тут линейное чтение? Вы посмотрите сколько hdd на случайном чтении дает (а будет 100-200 iops или 1MB/s в лучшем случае). База это не про линейное чтение ни в каком случае. PS: если у вас такой тормозной диск то сколько у вас стоит random_page_cost / seq_page_cost в конфиге? Я бы поставил 20 / 1 и тогда вероятно ваш запрос будет быстрее кстати пока таблица не слишком большая. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.05.2019, 15:26 |
|
почему так медленно?
|
|||
---|---|---|---|
#18+
например Seagate Barracuda https://www.seagate.com/staticfiles/support/disc/manuals/desktop/Barracuda 7200.11/100507013c.pdf Average latency 4.16 msec Track-to-track seek time <0.8 msec typical read; <1.0 msec typical write Average seek, read <8.5 msec typical Average seek, write <10.0 msec typical 8.5 msec = 1000 / 8.5 = 117 случайных IOPS SSD Sumsung Evo PRO 850 (такой лежит сейчас передо мной) https://www.samsung.com/semiconductor/minisite/ssd/product/consumer/850pro/ RANDOM READ (4KB, QD32) Up to 100,000 IOPS RANDOM READ (4KB, QD1) Up to 10,000 IOPS по IOPS'ам и спецификации получается от 40 до 850 раз быстрее на чтение ... |
|||
:
Нравится:
Не нравится:
|
|||
21.05.2019, 15:33 |
|
почему так медленно?
|
|||
---|---|---|---|
#18+
Maxim BogukПричем тут линейное чтение? Вы посмотрите сколько hdd на случайном чтении дает (а будет 100-200 iops или 1MB/s в лучшем случае). База это не про линейное чтение ни в каком случае. согласен PS: если у вас такой тормозной диск то сколько у вас стоит random_page_cost / seq_page_cost в конфиге? Я бы поставил 20 / 1 и тогда вероятно ваш запрос будет быстрее кстати пока таблица не слишком большая. не заметно пока... ясно, что на SSD поедет быстрее не ясно - на сколько ) но я попробую, спасибо я таки не понял, мускуль DELETE делает без транзакций, а PG с транзакциями? а count() ? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.05.2019, 15:46 |
|
почему так медленно?
|
|||
---|---|---|---|
#18+
полудух, какая версия постгреса? DDL таблицы, и EXPLAIN (лучше EXPLAIN (ANALYZE, VERBOSE, BUFFERS)) в студию. для сравнения можете привести и EXPLAIN SELECT count(*) FROM... из мускуля. тогда можно смотреть что и почему. за одно можете привести результат Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
... |
|||
:
Нравится:
Не нравится:
|
|||
22.05.2019, 08:34 |
|
почему так медленно?
|
|||
---|---|---|---|
#18+
полудухпри том, что все эти заморочки (и транзакции там на 1м месте) придуманы именно для сохранности данных. что это за наркоманский бред? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.05.2019, 10:43 |
|
почему так медленно?
|
|||
---|---|---|---|
#18+
Lonepsychoполудух, какая версия постгреса? DDL таблицы, и EXPLAIN (лучше EXPLAIN (ANALYZE, VERBOSE, BUFFERS)) в студию. для сравнения можете привести и EXPLAIN SELECT count(*) FROM... из мускуля. тогда можно смотреть что и почему. psql (11.3 (Debian 11.3-1.pgdg80+1)) DDL: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19.
EXPLAIN: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40.
Код: sql 1. 2. 3. 4. 5. 6.
за одно можете привести результат Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50.
... |
|||
:
Нравится:
Не нравится:
|
|||
22.05.2019, 14:42 |
|
почему так медленно?
|
|||
---|---|---|---|
#18+
полудух, Так и тестовый сценарий для обоих баз будет? Нетерпится проверить уже. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.10.2019, 11:06 |
|
почему так медленно?
|
|||
---|---|---|---|
#18+
полудух, Может дурацкий вопрос, что ежели * заменить на id: Код: sql 1.
На count(*) в плане есть строка: Код: sql 1.
Собственно, ИМНО по-любому накладные расходы... ... |
|||
:
Нравится:
Не нравится:
|
|||
15.10.2019, 16:10 |
|
почему так медленно?
|
|||
---|---|---|---|
#18+
fte, тогда он ещё и id будет чекать на NOT NULL а так ему пофигу ... |
|||
:
Нравится:
Не нравится:
|
|||
15.10.2019, 16:28 |
|
почему так медленно?
|
|||
---|---|---|---|
#18+
jan2ary, на любой таблице в 100к-1кк строк можно проверить ... |
|||
:
Нравится:
Не нравится:
|
|||
15.10.2019, 16:29 |
|
почему так медленно?
|
|||
---|---|---|---|
#18+
Так знать бы, куда смотреть. Потому что фраза "запрос по единственному ключу - самый быстрый запрос в БД..." сразу вызывает вопросы к постановке эксперимента. А то мы сравниваем "mysql> explain select count(*) from tasks where uid=29;" и Using index в нем и удаление в постгресе. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.10.2019, 18:10 |
|
|
start [/forum/topic.php?desktop=1&fid=53&tid=1995000]: |
0ms |
get settings: |
11ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
52ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
70ms |
get tp. blocked users: |
2ms |
others: | 273ms |
total: | 448ms |
0 / 0 |