|
Запрос с участием таблиц из разных схем
|
|||
---|---|---|---|
#18+
Посмотрите, что с СХД на котором крутиться ВМ. Помониторте саму ВМ средствами виртуализации. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.07.2019, 15:12 |
|
Запрос с участием таблиц из разных схем
|
|||
---|---|---|---|
#18+
ArkadyLА почему именно Код: sql 1.
Ведь проверяю наличие по EXISTS в другой таблице, где и нужен индекс? Вы неправильно читаете план. Там запрос база выполняет начиная от dispensary_observation_list и далее уже присоединяет к этому cards. Дальше надо думать какой индекс на cards нужен чтобы оно лучше работало (преполагая конечно что диски у вас в ноль не ушатаны). На вскидку без серьезного анализа могу посоветовать заменить индекс CREATE INDEX cards_surname_name1_name2_idx ON public.cards USING btree (surname COLLATE pg_catalog."default", name1 COLLATE pg_catalog."default", name2 COLLATE pg_catalog."default") TABLESPACE pg_default; на (surname, name1, name2, birthday, ctrldate) думаю он уже даст достаточную селективность. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.07.2019, 17:17 |
|
Запрос с участием таблиц из разных схем
|
|||
---|---|---|---|
#18+
Вроде, всё сделал, и индекс тоже. Код: plaintext 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
17.07.2019, 14:05 |
|
Запрос с участием таблиц из разных схем
|
|||
---|---|---|---|
#18+
А покажите план для Код: sql 1. 2. 3. 4. 5. 6. 7.
... |
|||
:
Нравится:
Не нравится:
|
|||
17.07.2019, 15:13 |
|
Запрос с участием таблиц из разных схем
|
|||
---|---|---|---|
#18+
Такой: Код: plaintext 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
17.07.2019, 16:22 |
|
Запрос с участием таблиц из разных схем
|
|||
---|---|---|---|
#18+
ArkadyLВроде, всё сделал, и индекс тоже. Execution time: 2351724.840 ms Ну вот уже стало в 20 раз быстрее. Дальше надо или думать про более оптимальный индекс или что более важно - про то почему вас диски так тормозят. Можно еще базе ресурсов больше выделить по памяти чтобы она меньше с диска читала (и настроить ее соответственно). ... |
|||
:
Нравится:
Не нравится:
|
|||
17.07.2019, 16:53 |
|
Запрос с участием таблиц из разных схем
|
|||
---|---|---|---|
#18+
Maxim BogukArkadyLВроде, всё сделал, и индекс тоже. Execution time: 2351724.840 ms Ну вот уже стало в 20 раз быстрее. Дальше надо или думать про более оптимальный индекс или что более важно - про то почему вас диски так тормозят. Можно еще базе ресурсов больше выделить по памяти чтобы она меньше с диска читала (и настроить ее соответственно). Кстати... какие настройки random_page_cost/seq_page_cost/effective_cache_size у вашей базы стоят? Похоже они не соответствуют реальности вообще. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.07.2019, 17:04 |
|
Запрос с участием таблиц из разных схем
|
|||
---|---|---|---|
#18+
А в какой строчке написано про диски? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.07.2019, 17:05 |
|
Запрос с участием таблиц из разных схем
|
|||
---|---|---|---|
#18+
ArkadyLА в какой строчке написано про диски? Ни в какой поскольку итоги с включенным track_io_timing вы не показали. Но вот чем то другим обьяснить строку -> Index Scan using cards_surname_name1_name2_idx on cards (cost=0.56..8.02 rows=1 width=41) (actual time=6.083..7.529 rows=0 loops=310351) Index Cond: (((surname)::text = (dispensary_observation.surname)::text) AND ((name1)::text = (dispensary_observation.name)::text) AND ((name2)::text = (dispensary_observation.patronymic)::text) AND (birthday = dispensary_observation.birthday) AND (ctrldate >= '2019-01-01'::date) AND (ctrldate <= '2019-06-30'::date)) Filter: ((datein >= '2019-01-01'::date) AND ((form_code)::text = ANY ('{ДВ1,ДВ3}'::text[])) AND ((case_isrepeat)::text = '0'::text)) Rows Removed by Filter: 7 Точнее actual time=6.083..7.529 кроме как тормозными дисками я не могу. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.07.2019, 17:51 |
|
Запрос с участием таблиц из разных схем
|
|||
---|---|---|---|
#18+
Maxim BogukArkadyLА в какой строчке написано про диски? Ни в какой поскольку итоги с включенным track_io_timing вы не показали. Но вот чем то другим обьяснить строку -> Index Scan using cards_surname_name1_name2_idx on cards (cost=0.56..8.02 rows=1 width=41) (actual time=6.083..7.529 rows=0 loops=310351) Index Cond: (((surname)::text = (dispensary_observation.surname)::text) AND ((name1)::text = (dispensary_observation.name)::text) AND ((name2)::text = (dispensary_observation.patronymic)::text) AND (birthday = dispensary_observation.birthday) AND (ctrldate >= '2019-01-01'::date) AND (ctrldate <= '2019-06-30'::date)) Filter: ((datein >= '2019-01-01'::date) AND ((form_code)::text = ANY ('{ДВ1,ДВ3}'::text[])) AND ((case_isrepeat)::text = '0'::text)) Rows Removed by Filter: 7 Точнее actual time=6.083..7.529 кроме как тормозными дисками я не могу. SHOW ALL Показывает, что track_io_timing=on. Надо каким-то образом сделать её и в базе? Ещё мы хотели бы получить доступ к VIEW pg_stat_statements. Мы видим её, запуская SELECT * FROM pg_views where schemaname='public', но SELECT * from public.pg_stat_statements выдаёт ошибку " SQL Error [55000]: ERROR: pg_stat_statements must be loaded via shared_preload_libraries". Настройку shared_preload_libraries = 'pg_stat_statements' в postgresql.conf делали и CREATE EXTENSION pg_stat_statements запускали. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.07.2019, 12:24 |
|
Запрос с участием таблиц из разных схем
|
|||
---|---|---|---|
#18+
ArkadyLЕщё мы хотели бы получить доступ к VIEW pg_stat_statements. Мы видим её, запуская SELECT * FROM pg_views where schemaname='public', но SELECT * from public.pg_stat_statements выдаёт ошибку " SQL Error [55000]: ERROR: pg_stat_statements must be loaded via shared_preload_libraries". Настройку shared_preload_libraries = 'pg_stat_statements' в postgresql.conf делали и CREATE EXTENSION pg_stat_statements запускали. А базу то рестартовали? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.07.2019, 12:44 |
|
Запрос с участием таблиц из разных схем
|
|||
---|---|---|---|
#18+
Да. Уже многократно. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.07.2019, 12:51 |
|
Запрос с участием таблиц из разных схем
|
|||
---|---|---|---|
#18+
ArkadyLНастройку shared_preload_libraries = 'pg_stat_statements' в postgresql.conf делали и CREATE EXTENSION pg_stat_statements запускали. Проверьте по Код: sql 1.
Может где случайно переписали значение дальше по конфигу. sourcefile, sourceline подскажут где. Ну и если pending_restart = true - значит базу всё-таки не рестартовали. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.07.2019, 13:24 |
|
Запрос с участием таблиц из разных схем
|
|||
---|---|---|---|
#18+
ArkadyLSHOW ALL Показывает, что track_io_timing=on. Надо каким-то образом сделать её и в базе? а что показывает select * from pg_settings where name = 'track_io_timing'; ? Какая версия базы у вас используется (все 3 цифры)? Какая операционная система? Очень странно что у вас результаты io timing не показываются. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.07.2019, 13:45 |
|
Запрос с участием таблиц из разных схем
|
|||
---|---|---|---|
#18+
MelkijArkadyLНастройку shared_preload_libraries = 'pg_stat_statements' в postgresql.conf делали и CREATE EXTENSION pg_stat_statements запускали. Проверьте по Код: sql 1.
Может где случайно переписали значение дальше по конфигу. sourcefile, sourceline подскажут где. Ну и если pending_restart = true - значит базу всё-таки не рестартовали. Спасибо! Базу рестартовали, но в указанной строке действительно была ссылка на нечто перезаписывающее config. pg_stat_statements заработала. select * from pg_settings where name = 'track_io_timing'; показывает, что поле setting=on PostgreSQL 10.9 (Ubuntu 10.9-1.pgdg16.04+1) on x86_64-pc-linux-gnu, compiled by gcc (Ubuntu 5.4.0-6ubuntu1~16.04.11) 5.4.0 20160609, 64-bit ... |
|||
:
Нравится:
Не нравится:
|
|||
18.07.2019, 14:06 |
|
Запрос с участием таблиц из разных схем
|
|||
---|---|---|---|
#18+
На этот раз план построился почти мгновенно. Код: plaintext 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. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62.
... |
|||
:
Нравится:
Не нравится:
|
|||
18.07.2019, 14:14 |
|
|
start [/forum/topic.php?fid=53&msg=39838382&tid=1995115]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
41ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
51ms |
get tp. blocked users: |
1ms |
others: | 14ms |
total: | 151ms |
0 / 0 |