Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Вдруг стал медленно выполняться запрос:
|
|||
|---|---|---|---|
|
#18+
"HashAggregate (cost=1807.60..1807.62 rows=1 width=31)" " -> Nested Loop (cost=157.96..1806.29 rows=131 width=31)" " -> Nested Loop (cost=145.60..252.16 rows=1 width=23)" " -> Nested Loop Left Join (cost=145.60..243.52 rows=1 width=15)" " -> Bitmap Heap Scan on accanl (cost=145.60..235.24 rows=1 width=16)" " Recheck Cond: ((accanl_fund = 56537) AND ((accsin1 = ANY ('{401,402,403,404,405,406,407}'::bpchar[])) OR (accsin2 = ANY ('{40802,40804,40805,40806,40807}'::bpchar[]))))" " Filter: (((dateclose >= '2007-06-18'::date) AND (dateclose <= '2007-06-24'::date) AND (dateopen <= '2007-06-24'::date)) OR (dateclose IS NULL))" " -> BitmapAnd (cost=145.60..145.60 rows=23 width=0)" " -> Bitmap Index Scan on idx32 (cost=0.00..11.22 rows=395 width=0)" " Index Cond: (accanl_fund = 56537)" " -> BitmapOr (cost=134.12..134.12 rows=4675 width=0)" " -> Bitmap Index Scan on idx30 (cost=0.00..78.19 rows=2721 width=0)" " Index Cond: (accsin1 = ANY ('{401,402,403,404,405,406,407}'::bpchar[]))" " -> Bitmap Index Scan on idx31 (cost=0.00..55.93 rows=1954 width=0)" " Index Cond: (accsin2 = ANY ('{40802,40804,40805,40806,40807}'::bpchar[]))" " -> Index Scan using pkidx20 on locbranch (cost=0.00..8.27 rows=1 width=15)" " Index Cond: (accanl.idlocbranch = locbranch.id)" " -> Index Scan using idx_dia_1 on fvaluedia (cost=0.00..8.64 rows=1 width=8)" " Index Cond: (fvaluedia.idrow = accanl.id)" " Filter: ((idfeature = 749630) AND ((fvalue)::text <> ALL (('{Накопительный,"Счет КБК"}'::character varying[])::text[])) AND (idfeature IS NOT NULL))" " -> Bitmap Heap Scan on restanl (cost=12.37..1549.12 rows=400 width=24)" " Recheck Cond: (restanl.idaccanl = accanl.id)" " Filter: ((restanl_date >= '2006-12-24'::date) AND (restanl_date <= '2007-06-24'::date))" " -> Bitmap Index Scan on idx12 (cost=0.00..12.34 rows=400 width=0)" " Index Cond: (restanl.idaccanl = accanl.id)" Уважаемые знатоки - кто видит без бинокля, где тормоза? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2007, 16:56 |
|
||
|
Вдруг стал медленно выполняться запрос:
|
|||
|---|---|---|---|
|
#18+
А это сам запрос select charcod,sum(abs(turndeb)) as td,sum(abs(turncre)) as tc from restanl inner join accanl on (restanl.idaccanl=accanl.id) left join fvaluedia on (fvaluedia.idrow=accanl.id and fvaluedia.idfeature=749630 and fvaluedia.fvalue not in ('Накопительный','Счет КБК') ) left join locbranch on (accanl.idlocbranch=locbranch.id) where (restanl_date >='2006-12-24' and restanl_date <='2007-06-24') and accanl.accanl_fund=56537 and ((accanl.dateclose>='2007-06-18' and accanl.dateclose<='2007-06-24' and accanl.dateopen<='2007-06-24') or accanl.dateclose is null ) and ((accanl.accsin1 in ('401','402','403','404','405','406','407')) or (accanl.accsin2 in ('40802','40804','40805','40806','40807'))) and idfeature is not null group by accanl.id,charcod ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2007, 17:04 |
|
||
|
Вдруг стал медленно выполняться запрос:
|
|||
|---|---|---|---|
|
#18+
ignitor"HashAggregate (cost=1807.60..1807.62 rows=1 width=31)" ................. Уважаемые знатоки - кто видит без бинокля, где тормоза? Esli hotite chtoby vam pomogli, to !Vsegda! privodite vyvod EXPLAIN ANALYZE, a ne prosto EXPLAIN. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2007, 17:16 |
|
||
|
Вдруг стал медленно выполняться запрос:
|
|||
|---|---|---|---|
|
#18+
Explain analyse делается до сих пор. Может что с настройками сервера не то? Посмотрите пожалуйста! ОЗУ 2ГБ, Intel Pentium Xeon 5110 1.6 Ghz "PostgreSQL 8.2.4 on i686-pc-mingw32, compiled by GCC gcc.exe (GCC) 3.4.2 (mingw-special)" listen_addresses = '*' max_connections = 50 shared_buffers = 256MB max_fsm_pages = 204800 wal_buffers = 256kB checkpoint_segments = 6 effective_cache_size = 512MB datestyle = 'iso, dmy' client_encoding = win1251 lc_messages = 'Russian_Russia.20866' lc_monetary = 'Russian_Russia.20866' lc_numeric = 'Russian_Russia.20866' lc_time = 'Russian_Russia.20866' остальное по дефаулту pg_config BINDIR = D:/POSTGR~1/bin DOCDIR = D:/POSTGR~1/doc INCLUDEDIR = D:/PostgreSQL/include PKGINCLUDEDIR = D:/PostgreSQL/include INCLUDEDIR-SERVER = D:/PostgreSQL/include/server LIBDIR = D:/POSTGR~1/lib PKGLIBDIR = D:/POSTGR~1/lib LOCALEDIR = D:/PostgreSQL/share/locale MANDIR = D:/PostgreSQL/man SHAREDIR = D:/POSTGR~1/share SYSCONFDIR = D:/PostgreSQL/etc PGXS = D:/PostgreSQL/lib/pgxs/src/makefiles/pgxs.mk CONFIGURE = '--with-openssl' '--with-perl' '--with-tcl' '--with-python' '--with-ldap' '--enable-nls' '--enable-thread-sa fety' '--with-krb5' '--with-includes=/mingw/include/krb5' CC = gcc CPPFLAGS = -I./src/include/port/win32 -DEXEC_BACKEND -I/mingw/include/krb5 -I../../../src/include/port/win32 CFLAGS = -O2 -Wall -Wmissing-prototypes -Wpointer-arith -Winline -Wdeclaration-after-statement -Wendif-labels -fno-stric t-aliasing CFLAGS_SL = LDFLAGS = -Wl,--allow-multiple-definition LDFLAGS_SL = LIBS = -lpgport -lintl -lssleay32 -leay32 -lcomerr32 -lkrb5_32 -lz -lm -lws2_32 -lshfolder VERSION = PostgreSQL 8.2.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2007, 17:50 |
|
||
|
Вдруг стал медленно выполняться запрос:
|
|||
|---|---|---|---|
|
#18+
Когда последний раз делали VACUUM? -- signature -- Да кому он нужен этот 8-ой номер? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2007, 18:04 |
|
||
|
Вдруг стал медленно выполняться запрос:
|
|||
|---|---|---|---|
|
#18+
VACUUM делал непосредственно перед запросом, со всеми опциями и по всемм таблицам по отдельности. А чем плоха 8? В пятницу таже версия работала вполне прилично, но после переинициализации кластера и перезаливки данных началась эта вот беда. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2007, 18:09 |
|
||
|
Вдруг стал медленно выполняться запрос:
|
|||
|---|---|---|---|
|
#18+
Решил индексы перестроить по самой большой таблице - ~9млн. записей. Что можно еще попробовать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2007, 18:34 |
|
||
|
Вдруг стал медленно выполняться запрос:
|
|||
|---|---|---|---|
|
#18+
Как ни странно - вроде бы помогло. И explain analyse быстро сделался ... В чем дело было? "HashAggregate (cost=1807.51..1807.53 rows=1 width=31) (actual time=63507.914..63510.484 rows=2559 loops=1)" " -> Nested Loop (cost=157.87..1806.20 rows=131 width=31) (actual time=1363.869..62555.970 rows=335930 loops=1)" " -> Nested Loop (cost=145.60..252.16 rows=1 width=23) (actual time=1273.143..22599.875 rows=2559 loops=1)" " -> Nested Loop Left Join (cost=145.60..243.52 rows=1 width=15) (actual time=1242.048..18038.653 rows=2588 loops=1)" " -> Bitmap Heap Scan on accanl (cost=145.60..235.24 rows=1 width=16) (actual time=1242.036..17961.645 rows=2588 loops=1)" " Recheck Cond: ((accanl_fund = 56537) AND ((accsin1 = ANY ('{401,402,403,404,405,406,407}'::bpchar[])) OR (accsin2 = ANY ('{40802,40804,40805,40806,40807}'::bpchar[]))))" " Filter: (((dateclose >= '2007-06-18'::date) AND (dateclose <= '2007-06-24'::date) AND (dateopen <= '2007-06-24'::date)) OR (dateclose IS NULL))" " -> BitmapAnd (cost=145.60..145.60 rows=23 width=0) (actual time=1201.788..1201.788 rows=0 loops=1)" " -> Bitmap Index Scan on idx32 (cost=0.00..11.22 rows=395 width=0) (actual time=674.870..674.870 rows=60088 loops=1)" " Index Cond: (accanl_fund = 56537)" " -> BitmapOr (cost=134.12..134.12 rows=4675 width=0) (actual time=523.612..523.612 rows=0 loops=1)" " -> Bitmap Index Scan on idx30 (cost=0.00..78.19 rows=2721 width=0) (actual time=288.570..288.570 rows=3964 loops=1)" " Index Cond: (accsin1 = ANY ('{401,402,403,404,405,406,407}'::bpchar[]))" " -> Bitmap Index Scan on idx31 (cost=0.00..55.93 rows=1954 width=0) (actual time=235.035..235.035 rows=1382 loops=1)" " Index Cond: (accsin2 = ANY ('{40802,40804,40805,40806,40807}'::bpchar[]))" " -> Index Scan using pkidx20 on locbranch (cost=0.00..8.27 rows=1 width=15) (actual time=0.022..0.023 rows=1 loops=2588)" " Index Cond: (accanl.idlocbranch = locbranch.id)" " -> Index Scan using idx_dia_1 on fvaluedia (cost=0.00..8.64 rows=1 width=8) (actual time=1.422..1.759 rows=1 loops=2588)" " Index Cond: (fvaluedia.idrow = accanl.id)" " Filter: ((idfeature = 749630) AND ((fvalue)::text <> ALL (('{Накопительный,"Счет КБК"}'::character varying[])::text[])) AND (idfeature IS NOT NULL))" " -> Bitmap Heap Scan on restanl (cost=12.28..1549.03 rows=400 width=24) (actual time=8.325..15.473 rows=131 loops=2559)" " Recheck Cond: (restanl.idaccanl = accanl.id)" " Filter: ((restanl_date >= '2006-12-24'::date) AND (restanl_date <= '2007-06-24'::date))" " -> Bitmap Index Scan on idx12 (cost=0.00..12.25 rows=400 width=0) (actual time=6.814..6.814 rows=454 loops=2559)" " Index Cond: (restanl.idaccanl = accanl.id)" "Total runtime: 63511.947 ms" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2007, 18:42 |
|
||
|
Вдруг стал медленно выполняться запрос:
|
|||
|---|---|---|---|
|
#18+
Ничего не понимаю - опять на том же запросе тормоза! Что делать? Где копать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2007, 20:02 |
|
||
|
Вдруг стал медленно выполняться запрос:
|
|||
|---|---|---|---|
|
#18+
INFO: vacuuming "public.restanl" INFO: "restanl": found 0 removable, 9084306 nonremovable row versions in 120132 pages DETAIL: 0 dead row versions cannot be removed yet. Nonremovable row versions range from 92 to 144 bytes long. There were 3625 unused item pointers. Total free space (including removable row versions) is 5976812 bytes. 0 pages are or will become empty, including 0 at the end of the table. 14504 pages containing 1433892 free bytes are potential move destinations. CPU 2.09s/0.96u sec elapsed 151.65 sec. INFO: index "idx12" now contains 9084306 row versions in 24911 pages DETAIL: 0 index row versions were removed. 0 index pages have been deleted, 0 are currently reusable. CPU 0.43s/2.32u sec elapsed 17.98 sec. INFO: index "idx13" now contains 9084306 row versions in 24911 pages DETAIL: 0 index row versions were removed. 0 index pages have been deleted, 0 are currently reusable. CPU 0.59s/2.57u sec elapsed 20.65 sec. INFO: "restanl": moved 0 row versions, truncated 120132 to 120132 pages DETAIL: CPU 0.06s/0.17u sec elapsed 4.65 sec. INFO: analyzing "public.restanl" INFO: "restanl": scanned 3000 of 120132 pages, containing 226845 live rows and 0 dead rows; 3000 rows in sample, 9083781 estimated total rows Total query runtime: 195294 ms. Сделал VACUUM FULL вроде опять нормально работает. Как часто надо вакуумить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2007, 20:14 |
|
||
|
Вдруг стал медленно выполняться запрос:
|
|||
|---|---|---|---|
|
#18+
VACUUM FULL - это круто. У меня VACUUM ANALYZE делается раз в сутки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.06.2007, 03:56 |
|
||
|
Вдруг стал медленно выполняться запрос:
|
|||
|---|---|---|---|
|
#18+
постгрес ошибается в оценке кол-ва строк Код: plaintext Код: plaintext Код: plaintext из-за этого возможно выбирает не самый оптимальный план попробуйте собрать более точную статистику по нужным стобцам таблицы accanl с помощью команды vacuum analyze при большем значении переменной default_statistics_target=... или ALTER TABLE ... ALTER COLUMN ... SET STATISTICS ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.06.2007, 09:57 |
|
||
|
Вдруг стал медленно выполняться запрос:
|
|||
|---|---|---|---|
|
#18+
Действительно - после VACUUM ANALYSE на все таблицы, время выполнения запросов нормализовалось. Увеличил, как советовал Lexa NailBat default_statistics_target=100 (было 10) и тепер EXPLAIN ANALYSE выглядит так: "HashAggregate (cost=220558.29..220757.49 rows=9960 width=31) (actual time=5546.835..5549.301 rows=2559 loops=1)" " -> Hash Join (cost=48503.37..219759.84 rows=79845 width=31) (actual time=876.900..4610.365 rows=335930 loops=1)" " Hash Cond: (restanl.idaccanl = accanl.id)" " -> Bitmap Heap Scan on restanl (cost=39497.59..197495.42 rows=2507789 width=24) (actual time=673.133..2830.067 rows=2454083 loops=1)" " Recheck Cond: ((restanl_date >= '2006-12-24'::date) AND (restanl_date <= '2007-06-24'::date))" " -> Bitmap Index Scan on idx13 (cost=0.00..38870.64 rows=2507789 width=0) (actual time=659.848..659.848 rows=2454083 loops=1)" " Index Cond: ((restanl_date >= '2006-12-24'::date) AND (restanl_date <= '2007-06-24'::date))" " -> Hash (cost=8985.11..8985.11 rows=1654 width=23) (actual time=203.737..203.737 rows=2559 loops=1)" " -> Hash Left Join (cost=6518.51..8985.11 rows=1654 width=23) (actual time=88.428..201.204 rows=2559 loops=1)" " Hash Cond: (accanl.idlocbranch = locbranch.id)" " -> Hash Join (cost=6512.10..8972.02 rows=1654 width=24) (actual time=88.261..197.781 rows=2559 loops=1)" " Hash Cond: (fvaluedia.idrow = accanl.id)" " -> Bitmap Heap Scan on fvaluedia (cost=766.75..2923.08 rows=57410 width=8) (actual time=14.131..91.067 rows=56636 loops=1)" " Recheck Cond: (idfeature = 749630)" " Filter: ((fvalue)::text <> ALL (('{Накопительный,"Счет КБК"}'::character varying[])::text[]))" " -> Bitmap Index Scan on idx_dia_3 (cost=0.00..752.40 rows=57619 width=0) (actual time=13.754..13.754 rows=56981 loops=1)" " Index Cond: (idfeature = 749630)" " -> Hash (cost=5724.59..5724.59 rows=1660 width=16) (actual time=74.103..74.103 rows=2588 loops=1)" " -> Bitmap Heap Scan on accanl (cost=121.26..5724.59 rows=1660 width=16) (actual time=3.530..71.210 rows=2588 loops=1)" " Recheck Cond: ((accsin1 = ANY ('{401,402,403,404,405,406,407}'::bpchar[])) OR (accsin2 = ANY ('{40802,40804,40805,40806,40807}'::bpchar[])))" " Filter: ((accanl_fund = 56537) AND (((dateclose >= '2007-06-18'::date) AND (dateclose <= '2007-06-24'::date) AND (dateopen <= '2007-06-24'::date)) OR (dateclose IS NULL)))" " -> BitmapOr (cost=121.26..121.26 rows=5788 width=0) (actual time=2.609..2.609 rows=0 loops=1)" " -> Bitmap Index Scan on idx30 (cost=0.00..91.52 rows=4768 width=0) (actual time=1.806..1.806 rows=3313 loops=1)" " Index Cond: (accsin1 = ANY ('{401,402,403,404,405,406,407}'::bpchar[]))" " -> Bitmap Index Scan on idx31 (cost=0.00..28.91 rows=1021 width=0) (actual time=0.800..0.800 rows=1110 loops=1)" " Index Cond: (accsin2 = ANY ('{40802,40804,40805,40806,40807}'::bpchar[]))" " -> Hash (cost=6.34..6.34 rows=6 width=15) (actual time=0.137..0.137 rows=6 loops=1)" " -> Index Scan using pkidx20 on locbranch (cost=0.00..6.34 rows=6 width=15) (actual time=0.121..0.127 rows=6 loops=1)" "Total runtime: 5551.442 ms" И еще вопрос до кучи - стоит ли использовать autovacuum=on или же лучше поставить в ежедневную задачу VACUUM ANALYSE ночью? Особенностью базы является то, что большинство таблиц удаляются, затем создаются вновь, заливаются данными через COPY, затем строятся индексы. Таблицы по 3-12млн. активно обновляются в течение дня, идет удаление 18-50 тысяч записей и затем через COPY заливаются обратно. Какой вариант мне подходит больше? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.06.2007, 10:38 |
|
||
|
Вдруг стал медленно выполняться запрос:
|
|||
|---|---|---|---|
|
#18+
ignitorТаблицы по 3-12млн. активно обновляются в течение дня, идет удаление 18-50 тысяч записей и затем через COPY заливаются обратно. Какой вариант мне подходит больше?если есть возможность провести analyze именно этой таблицы сразу после массовой операции удаления - почему бы его не произвесть? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.06.2007, 11:06 |
|
||
|
Вдруг стал медленно выполняться запрос:
|
|||
|---|---|---|---|
|
#18+
ignitordefault_statistics_target=100 (было 10) и тепер EXPLAIN ANALYSE выглядит такда, теперь вроде бы все нормально ignitorИ еще вопрос до кучи - стоит ли использовать autovacuum=on или же лучше поставить в ежедневную задачу VACUUM ANALYSE ночью? Особенностью базы является то, что большинство таблиц удаляются, затем создаются вновь, заливаются данными через COPY, затем строятся индексы.наверное надо или а) включить autovacuum, или б) делать vacuum, analyze после каждого массированного обновления таблицы ignitorТаблицы по 3-12млн. активно обновляются в течение дня, идет удаление 18-50 тысяч записей и затем через COPY заливаются обратно. Какой вариант мне подходит больше?36-100 тысяч строк для таблицы из 3-12 миллионов составляют 1 процент, то есть их изменение не является массированным обновлением таблицы, имхо поэтому vacuum, analyze после каждого такого изменения не обязательны LeXa NalBat Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.06.2007, 12:39 |
|
||
|
Вдруг стал медленно выполняться запрос:
|
|||
|---|---|---|---|
|
#18+
assa...провести analyze именно этой таблицы... Так я и сделаю. А autovacuum все же отключать или оставить в on? Обновлениями данных в базе занимается только 1 процесс, остальные пользователи только читают (строят отчеты). Может заодно кто-нибудь посоветует какие параметры в postgresql.conf покрутить для оптимизации под тяжелые запросы для множества пользователей? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.06.2007, 12:41 |
|
||
|
Вдруг стал медленно выполняться запрос:
|
|||
|---|---|---|---|
|
#18+
LeXa NalBat ... 36-100 тысяч строк для таблицы из 3-12 миллионов составляют 1 процент, то есть их изменение не является массированным обновлением таблицы, имхо поэтому vacuum, analyze после каждого такого изменения не обязательны ... Обратил внимание на странную вещь - раньше, когда я вставлял записи при помощи INSERT, действительно эти обновления никак не отражались на выполнении запросов. Стоило мне поменять стратегию загрузки - сначала в текст, потом COPY в таблицу - даже 5 таких вставок по 18 тысяч записей приводят к тому, что EXPLAIN ANALYSE уходит в себя и не возвращается. После VACUUM ANALYSE все приходит в норму. Это особенность COPY? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.06.2007, 15:24 |
|
||
|
Вдруг стал медленно выполняться запрос:
|
|||
|---|---|---|---|
|
#18+
Еще вопрос: есть две таблицы CREATE TABLE accanl ( id bigint, idclient bigint, acc_char character(1), accanl_pic character(25), accsin1 character(3), accsin2 character(5), accanl_area bigint, accanl_branch bigint, accanl_fund bigint, dateopen date, dateclose date, datechange date, datefirstpay date, accanl_name character(160), idlocbranch bigint, note character(640), accsort character(25) ) WITHOUT OIDS; 57679 записей и CREATE TABLE linkdia ( f_parentid bigint, f_childid bigint, f_selector bigint, f_linkid bigint ) WITHOUT OIDS; 153722 записи explain analyse update accanl set idlocbranch=(select f_childid from linkdia where f_parentid=accanl.id and f_selector=1 and f_linkid=3) "Seq Scan on accanl (cost=100000000.00..101861149.41 rows=115019 width=3526) (actual time=0.076..541.220 rows=57679 loops=1)" " SubPlan" " -> Index Scan using part_idx_1 on linkdia (cost=0.00..16.03 rows=1 width=8) (actual time=0.004..0.004 rows=0 loops=57679)" " Index Cond: (f_parentid = $0)" "Total runtime: 216345.747 ms" Что-то мне подсказывает, что так долго выполняться не должно. Запрос дурной? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2007, 08:59 |
|
||
|
Вдруг стал медленно выполняться запрос:
|
|||
|---|---|---|---|
|
#18+
запрос переписал, но все равно както долго мне кажется: explain analyse update accanl set idlocbranch=(select f_childid from linkdia where f_parentid=accanl.id and f_selector=1 and f_linkid=3) where accanl.id in (select f_parentid from linkdia where (f_selector=1 and f_linkid=3)) "Nested Loop (cost=293.61..1307.01 rows=114 width=987) (actual time=1927.222..29509.066 rows=1584 loops=1)" " -> HashAggregate (cost=293.61..295.12 rows=151 width=8) (actual time=7.663..10.071 rows=1584 loops=1)" " -> Index Scan using part_idx_1 on linkdia (cost=0.00..292.85 rows=302 width=8) (actual time=0.068..6.062 rows=1584 loops=1)" " -> Index Scan using idx1 on accanl (cost=0.00..3.46 rows=1 width=987) (actual time=18.601..18.605 rows=1 loops=1584)" " Index Cond: (accanl.id = linkdia.f_parentid)" " SubPlan" " -> Index Scan using part_idx_1 on linkdia (cost=0.00..4.28 rows=1 width=8) (actual time=0.008..0.009 rows=1 loops=1584)" " Index Cond: (f_parentid = $0)" "Total runtime: 38507.027 ms" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2007, 09:27 |
|
||
|
Вдруг стал медленно выполняться запрос:
|
|||
|---|---|---|---|
|
#18+
очень медленно работает этот индекс, попробуйте его пересоздать Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2007, 10:35 |
|
||
|
Вдруг стал медленно выполняться запрос:
|
|||
|---|---|---|---|
|
#18+
У тебя две проблемы, а не одна. Но одну тебе помогли решить. Еще проверяй, сколько места занимают индексы - постгрес версионник, это приводит к некоторым последствиям, которые надо учитывать. Например, при обновлении малого числа записей таблицы можно получить кучу мусора. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2007, 21:17 |
|
||
|
Вдруг стал медленно выполняться запрос:
|
|||
|---|---|---|---|
|
#18+
MBG...Еще проверяй, сколько места занимают индексы ... Ну допустим проверил я сколько у меня места индексы занимают - как это мне может помочь? Вот статистика по самой большой таблице SELECT relname AS name, relfilenode AS oid, relpages as size_in_pages , reltuples::numeric as count FROM pg_class WHERE relname NOT LIKE 'pg%' ORDER BY relpages DESC; name oid size_in_pages reltuples "docblc" 16714 700088 3801970 "didx1" 25917 12075 3801970 "didx2" 25921 12946 3801970 "didx3" 25922 29130 3801970 "didx4" 25923 12737 3801970 "didx5" 25924 12647 3801970 И еще - нашел вот такой совет: "Иногда, особенно для интенсивно обновляемых таблиц, начинают сыпаться deadlock'и и VACUUM выполняется нереально долгое время. Часто проблема из-за поврежденного индекса. Решение: REINDEX TABLE таблица; REINDEX INDEX индекс;" я всегда думал, что REINDEX TABLE предполагает, что индексы к этой таблице так же переиндексируются - это не так? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2007, 11:56 |
|
||
|
Вдруг стал медленно выполняться запрос:
|
|||
|---|---|---|---|
|
#18+
Дело в том, что версионность данных приводит к существованию индексов на все версии данных. Удаленные или измененные данные тоже имеют индексы, иногда это приводит к взрывообразному росту индексов, например на таблице 100 мегабайт индексы могут вырасти в десятки гигабайт (зависит от методологии работы с данными, разумеется). Вот тут и начинаются развлечения :-) Оптимальный вариант - перепроектировать приложение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2007, 15:16 |
|
||
|
Вдруг стал медленно выполняться запрос:
|
|||
|---|---|---|---|
|
#18+
ignitorВот статистика по самой большой таблице name oid size_in_pages reltuples "docblc" 16714 700088 3801970 "didx1" 25917 12075 3801970 "didx2" 25921 12946 3801970 "didx3" 25922 29130 3801970 "didx4" 25923 12737 3801970 "didx5" 25924 12647 3801970И? :-) Зачем смотреть статистику на "самую большую таблицу" docblc, если у вас тормозит индекс idx1 по таблице accanl? ignitorя всегда думал, что REINDEX TABLE предполагает, что индексы к этой таблице так же переиндексируются - это не так?Судя по доке - это так. MBGпри обновлении малого числа записей таблицы можно получить кучу мусора.Думаю, что при обновлении малого числа записей можно получить мало мусора, а не кучу. MBGУдаленные или измененные данные тоже имеют индексыНет, удаленные строки индекса помечаются как пригодные для использования командой vacuum. 22.1. Routine Vacuuming"lazy vacuum" or just VACUUM, marks expired data in tables and indexes for future reuse MBGиногда это приводит к взрывообразному росту индексов, например на таблице 100 мегабайт индексы могут вырасти в десятки гигабайтИз-за того что никогда не вызывается vacuum или reindex, или из-за описанного ниже эффекта? 22.2. Routine Reindexingif all but a few index keys on a page have been deleted, the page remains allocated. So a usage pattern in which all but a few keys in each range are eventually deleted will see poor use of space. MBGОптимальный вариант - перепроектировать приложение.Проще регулярно вызывать vacuum и reindex. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2007, 15:46 |
|
||
|
Вдруг стал медленно выполняться запрос:
|
|||
|---|---|---|---|
|
#18+
LeXa NalBat MBGОптимальный вариант - перепроектировать приложение.Проще регулярно вызывать vacuum и reindex. Если вызывать И vacuum И reindex, мусор будет чиститься, но на огромных таблицах выполняется долго. Лучше данные записать во временную таблицу, там обработать и переложить в большую таблицу. А на временную таблицу индексы обычно не нужны, так как обрабатываются все загруженные записи (а иначе зачем их грузить). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2007, 21:11 |
|
||
|
|

start [/forum/topic.php?fid=53&msg=34618488&tid=2005296]: |
0ms |
get settings: |
11ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
49ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
90ms |
get tp. blocked users: |
1ms |
| others: | 259ms |
| total: | 445ms |

| 0 / 0 |
