On 16.07.2007, at 12:17, Pechnikov Alexey wrote:
Раз не справляется, значит что-то криво. Схему таблицы и план выполнения покажите. Сколько одновременных пользователей и какой пул БД используете?
порядка 10-20 активных соединений, пример плана выполнения запросов:dbmail=# explain SELECT message_idnr+1 FROM dbmail_messages WHERE mailbox_idnr=37 ORDER BY message_idnr DESC LIMIT 1;
QUERY PLAN
------------------------------------------------------------------------
------------------------------------------
Limit (cost=0.00..24.98 rows=1 width=8)-> Index Scan Backward using dbmail_messages_pkey on dbmail_messages (cost=0.00..78500.38 rows=3142 width=8)
Filter: (mailbox_idnr = 37)
(записей: 3)
dbmail=# explain SELECT message_idnr FROM dbmail_messages m JOIN
dbmail_physmessage p ON m.physmessage_id=p.id JOIN dbmail_headervalue
v on v.physmessage_id=p.id WHERE mailbox_idnr = 645 AND status IN
(0,1) AND headervalue ILIKE '%charsettest%' ORDER BY message_idnr;
QUERY PLAN
------------------------------------------------------------------------
----------------------------------------
Sort (cost=840683.09..840683.10 rows=1 width=8)
Sort Key: m.message_idnr
-> Nested Loop (cost=0.00..840683.08 rows=1 width=8)
-> Nested Loop (cost=0.00..840679.66 rows=1 width=24)
-> Seq Scan on dbmail_headervalue v
(cost=0.00..840669.16 rows=3 width=8)
Filter: (headervalue ~~* '%charsettest%'::text)
-> Index Scan using dbmail_messages_2 on
dbmail_messages m (cost=0.00..3.49 rows=1 width=16)
Index Cond: (v.physmessage_id = m.physmessage_id)
Filter: ((mailbox_idnr = 645) AND (status = ANY
('{0,1}'::integer[])))
-> Index Scan using dbmail_physmessage_pkey on
dbmail_physmessage p (cost=0.00..3.41 rows=1 width=8)
Index Cond: (m.physmessage_id = p.id)
(записей: 11)
postgresql конечно 8.2 а не 8.3 :)
конфиг примерно такой:
max_connections = 500
shared_buffers = 512MB
work_mem = 256MB
maintenance_work_mem = 512MB
max_stack_depth = 5MB
max_fsm_pages = 204800
max_fsm_relations = 10000
vacuum_cost_delay = 50 # 0-1000 milliseconds
bgwriter_delay = 200ms # 10-10000ms between rounds
bgwriter_lru_percent = 20.0 # 0-100% of LRU buffers
scanned/round
bgwriter_lru_maxpages = 100 # 0-1000 buffers max written/
round
bgwriter_all_percent = 3 # 0-100% of all buffers
scanned/round
bgwriter_all_maxpages = 600 # 0-1000 buffers max written/
round
fsync = on # turns forced
synchronization on or off
wal_sync_method = fdatasync # the default is the first
option
enable_seqscan = on random_page_cost = 1.5 # same scale as above effective_cache_size = 512MBя не думаю что тут проблема в структуре / настройках бд - скорее в запросах :)
бд сервер - 2 х Intel(R) Xeon(TM) CPU 2.66GHz, 2Gb RAM, диски scsiНа таком железе терабайтную базу гонять можно.
Как обычно - смотря какие запросы :)Впрочем меня всегда интересовал вопрос как они вообще живут эти террабайтный базы в реальной жизни.
Алексей Бещёков [EMAIL PROTECTED] +7 495 7853149
smime.p7s
Description: S/MIME cryptographic signature

