Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Большая база на медленной "машине"
|
|||
|---|---|---|---|
|
#18+
Подскажите как можно оптимизировать работу с базой (9 полей, более 10 милионов записей в год) на достаточно слабенькой "машинке" (P255, 128mb(оперативки),40gb(винт)). Стоит FreeBSD 6.0 и PGSQL 7.4.13. Использую в основном команды SELECT в том числе вложеные (делаеться очень медленно), в базу запись происходит раз в сутки (не критично). При запросах типа (SELECT * FROM table WHERE date >'начало' AND date >'конец';) работает ОЧЕНЬ долго (минут по 15).Пробовал сделать индексы помогло не очень. Потом разбил на 12 таблиц (по месяцам) стало побыстрее, но хочеться еще ускорить. Подскажите что еще можно "покрутить" для ускорения (или где почитать, желательно по русски)? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2007, 19:15 |
|
||
|
Большая база на медленной "машине"
|
|||
|---|---|---|---|
|
#18+
Ivan A.ZhukovПодскажите как можно оптимизировать работу с базой (9 полей, более 10 милионов записей в год) на достаточно слабенькой "машинке" (P255, 128mb(оперативки),40gb(винт)). Стоит FreeBSD 6.0 и PGSQL 7.4.13. Использую в основном команды SELECT в том числе вложеные (делаеться очень медленно), в базу запись происходит раз в сутки (не критично). При запросах типа (SELECT * FROM table WHERE date >'начало' AND date >'конец';) работает ОЧЕНЬ долго (минут по 15).Пробовал сделать индексы помогло не очень. Потом разбил на 12 таблиц (по месяцам) стало побыстрее, но хочеться еще ускорить. Подскажите что еще можно "покрутить" для ускорения (или где почитать, желательно по русски)? * Поставить 8.2.5 * Потюнить postgresql.conf * Использовать partition + constraint exclusion * Индексы * Показать explain analyze ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2007, 22:14 |
|
||
|
Большая база на медленной "машине"
|
|||
|---|---|---|---|
|
#18+
Oleg Bartunov Ivan A.ZhukovПодскажите как можно оптимизировать работу с базой (9 полей, более 10 милионов записей в год) на достаточно слабенькой "машинке" (P255, 128mb(оперативки),40gb(винт)). Стоит FreeBSD 6.0 и PGSQL 7.4.13. Использую в основном команды SELECT в том числе вложеные (делаеться очень медленно), в базу запись происходит раз в сутки (не критично). При запросах типа (SELECT * FROM table WHERE date >'начало' AND date >'конец';) работает ОЧЕНЬ долго (минут по 15).Пробовал сделать индексы помогло не очень. Потом разбил на 12 таблиц (по месяцам) стало побыстрее, но хочеться еще ускорить. Подскажите что еще можно "покрутить" для ускорения (или где почитать, желательно по русски)? * Поставить 8.2.5 * Потюнить postgresql.conf * Использовать partition + constraint exclusion * Индексы * Показать explain analyze а почему не 8.3? ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2007, 10:29 |
|
||
|
Большая база на медленной "машине"
|
|||
|---|---|---|---|
|
#18+
Winnipuh а почему не 8.3? ;) 8.3 еще не продакшен. Поэтому советовать ее для боевой базы неосмотрительно. Она предназначена для тестирования. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2007, 15:40 |
|
||
|
Большая база на медленной "машине"
|
|||
|---|---|---|---|
|
#18+
Oleg Bartunov* Поставить 8.2.5 А она быстрее будет на такой медленной машине? Oleg Bartunov* Потюнить postgresql.conf А где про это, по русски, можно почитать? Oleg Bartunov* Использовать partition + constraint exclusion А это что за зверь? (по русски желательно) :-) Oleg Bartunov* Индексы Дак делаю я их. Вот только не знаю лучше на каждое поле по одному или один на все поля? В запросах в секции WHERE фигурирует три, четыре поля. Oleg Bartunov* Показать explain analyze Выдает ошибку. :-( Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2007, 18:03 |
|
||
|
Большая база на медленной "машине"
|
|||
|---|---|---|---|
|
#18+
Ivan A.Zhukov Oleg Bartunov* Поставить 8.2.5 А она быстрее будет на такой медленной машине? Oleg Bartunov* Потюнить postgresql.conf А где про это, по русски, можно почитать? Oleg Bartunov* Использовать partition + constraint exclusion А это что за зверь? (по русски желательно) :-) Oleg Bartunov* Индексы Дак делаю я их. Вот только не знаю лучше на каждое поле по одному или один на все поля? В запросах в секции WHERE фигурирует три, четыре поля. Oleg Bartunov* Показать explain analyze Выдает ошибку. :-( Код: plaintext 1. 1. Она в принципе - быстрее. По идее и на такой машине тоже. Может быть нужно немного памяти добросить для ускорения запросов. 2. В ФАК. 3. В доки (на русском не думаю что что-то будет серьезное) + поиск по форуму. 4. explain analyze SELECT .... ; где SELECT ... - это Ваш тормозящий мегазапрос. Поищите по форуму. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2007, 18:28 |
|
||
|
Большая база на медленной "машине"
|
|||
|---|---|---|---|
|
#18+
Понял, поищу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2007, 18:55 |
|
||
|
Большая база на медленной "машине"
|
|||
|---|---|---|---|
|
#18+
Andrey Daeron4. explain analyze SELECT .... ; где SELECT ... - это Ваш тормозящий мегазапрос. Поищите по форуму. Вот ответ на самый простой запрос. О чем он может сказать? Подскажите, пожалуйста. statistic=# explain analyze SELECT src_addr FROM tmp2_2007_09 WHERE src_addr << '192.168.101/24' GROUP BY src_addr ORDER BY src_addr; QUERY PLAN -------------------------------------------------------------------------------- ---------------------------------------------------- Sort (cost=5837.99..5838.53 rows=214 width=11) (actual time=8892.798..8892.818 rows=5 loops=1) Sort Key: src_addr -> HashAggregate (cost=5829.71..5829.71 rows=214 width=11) (actual time=889 2.583..8892.659 rows=5 loops=1) -> Seq Scan on tmp2_2007_09 (cost=0.00..5526.83 rows=121153 width=11) (actual time=362.747..7710.932 rows=48437 loops=1) Filter: (src_addr << '192.168.101.0/24'::inet) Total runtime: 8893.659 ms (записей: 6) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2007, 19:13 |
|
||
|
Большая база на медленной "машине"
|
|||
|---|---|---|---|
|
#18+
Ivan A.Zhukov Andrey Daeron4. explain analyze SELECT .... ; где SELECT ... - это Ваш тормозящий мегазапрос. Поищите по форуму. Вот ответ на самый простой запрос. О чем он может сказать? Подскажите, пожалуйста. statistic=# explain analyze SELECT src_addr FROM tmp2_2007_09 WHERE src_addr << '192.168.101/24' GROUP BY src_addr ORDER BY src_addr; QUERY PLAN -------------------------------------------------------------------------------- ---------------------------------------------------- Sort (cost=5837.99..5838.53 rows=214 width=11) (actual time=8892.798..8892.818 rows=5 loops=1) Sort Key: src_addr -> HashAggregate (cost=5829.71..5829.71 rows=214 width=11) (actual time=889 2.583..8892.659 rows=5 loops=1) -> Seq Scan on tmp2_2007_09 (cost=0.00..5526.83 rows=121153 width=11) (actual time=362.747..7710.932 rows=48437 loops=1) Filter: (src_addr << '192.168.101.0/24'::inet) Total runtime: 8893.659 ms (записей: 6) 1. Индекса по src_addr или нет, или не используется (в связи с этим рекомендация перейти на 8.2 еще более актуальна, до 8-ки несоответсвие типов приводила к неиспользвоанию индексов, т.е. нужно приведение типов вручную). + не уверен, что по типу INET для операции << PostgreSQL может использовать индекс. Это может кто-то более компетентный подскажет. 2. Планер "некисло" ошибается при оценке кол-ва строк: ждет 121153, а получает 48437. Возможно давно делалася VACUUM FULL ANALYZE (точнее ANALYZE, но тем не менее). 3. Основное время тратится на полное чтение таблицы. 362.747..7710.932. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2007, 19:33 |
|
||
|
Большая база на медленной "машине"
|
|||
|---|---|---|---|
|
#18+
Andrey Daeron1. Индекса по src_addr или нет, или не используется (в связи с этим рекомендация перейти на 8.2 еще более актуальна, до 8-ки несоответсвие типов приводила к неиспользвоанию индексов, т.е. нужно приведение типов вручную). + не уверен, что по типу INET для операции << PostgreSQL может использовать индекс. Это может кто-то более компетентный подскажет. 2. Планер "некисло" ошибается при оценке кол-ва строк: ждет 121153, а получает 48437. Возможно давно делалася VACUUM FULL ANALYZE (точнее ANALYZE, но тем не менее). 3. Основное время тратится на полное чтение таблицы. 362.747..7710.932. 1. Понял буду работать в этом направлении. 2. VACUUM FULL ANALYZE делал сегодня. 3. А что сделать чтобы это время уменьшить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2007, 19:54 |
|
||
|
Большая база на медленной "машине"
|
|||
|---|---|---|---|
|
#18+
Ivan A.Zhukov 1. Понял буду работать в этом направлении. 2. VACUUM FULL ANALYZE делал сегодня. 3. А что сделать чтобы это время уменьшить? 1. :) тесты бы поделать 2. Значит попробуйте поднять статистику по этому полю. 3. Ну тут уже скорее всего проблемы аппаратной части. Славно было бы перейти на использование индексов, что бы не все читать. Кста, а сколько у Вас в принципе данных в таблице? Можно еще поиграться с отключением/включением принудительного неиспользования seq_scan. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2007, 20:05 |
|
||
|
Большая база на медленной "машине"
|
|||
|---|---|---|---|
|
#18+
Ivan A.ZhukovВот ответ на самый простой запрос. О чем он может сказать? Подскажите, пожалуйста. -> HashAggregate (actual rows=5) -> Seq Scan (actual rows=48437)для distinct выборки пяти строк приходится прочесать пятьдесят тысяч строк. причем это для плана indexscan, а для secscan - всю таблицу. возможно, приемлемую быструю скорость будет показывать indexscan. иначе ускорение подобных запросов обсуждали тут и тут . Andrey Daeronне уверен, что по типу INET для операции << PostgreSQL может использовать индекспровел тест на 8.1.9, вроде бы умеет индекс по inet использовать Код: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2007, 11:02 |
|
||
|
|

start [/forum/topic.php?fid=53&msg=34870153&tid=2004931]: |
0ms |
get settings: |
9ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
52ms |
get topic data: |
6ms |
get forum data: |
2ms |
get page messages: |
31ms |
get tp. blocked users: |
1ms |
| others: | 254ms |
| total: | 376ms |

| 0 / 0 |
