Системийн ихэнх удаашрал өгөгдлийн сангаас эхэлдэг. Сервер нэмж худалдаж авахаас өмнө асуулга, индекс, тохиргоогоо эргэж хараарай. Бид олон жилийн турш харилцагчдынхаа PostgreSQL серверүүдийг тохируулж ирсэн туршлагаасаа хамгийн их үр дүн өгдөг долоон зөвлөгөөг түүвэрлэлээ.
1. Удаан асуулгаа эхлээд ол
pg_stat_statements өргөтгөлийг асаагаад нийт хугацааг хамгийн их зарцуулж буй асуулгуудыг харна. Ихэнхдээ хоёр гурван асуулга нийт ачааллын талаас илүүг эзэлдэг.
SELECT round(total_exec_time::numeric, 0) AS нийт_мс,
calls AS дуудсан,
round(mean_exec_time::numeric, 1) AS дундаж_мс,
left(query, 80) AS асуулга
FROM pg_stat_statements
ORDER BY total_exec_time DESC
LIMIT 10;
2. Индексээ асуулгандаа тааруул
Индекс бүр бичих үйлдлийг удаашруулдаг тул «бүх баганад индекс» гэсэн хандлага буруу. WHERE болон ORDER BY-д хамт ордог баганууддаа нийлмэл индекс үүсгэ. Ажиллаж буй системд индексийг хүснэгт түгжихгүйгээр үүсгээрэй:
CREATE INDEX CONCURRENTLY idx_orders_customer_date
ON orders (customer_id, created_at DESC);
3. EXPLAIN ANALYZE-г уншиж сур
Төлөвлөгөөнд Seq Scan том хүснэгт дээр гарч байвал индекс ашиглагдахгүй байна гэсэн дохио. Мөн тооцоолсон болон бодит мөрийн тоо хэт зөрж байвал статистик хуучирсан байж магадгүй.
| Үйлдэл | Индексгүй | Индекстэй |
|---|---|---|
| Харилцагчийн захиалга хайх | 1 840 мс | 3.2 мс |
| Сүүлийн 30 хоногийн тайлан | 6 210 мс | 148 мс |
| Нэг захиалга нэмэх | 0.8 мс | 1.1 мс |
4–7. Бусад зөвлөгөө
- Холболтын санг ашигла. PgBouncer зэрэг хэрэгслээр олон зуун холболтыг цөөн серверийн холболтоор үйлчил.
- VACUUM ба ANALYZE-г хянах. autovacuum том хүснэгтүүд дээр хоцорч байгаа эсэхийг шалга.
- Санах ойн тохиргоо. shared_buffers-ийг нийт санах ойн 25 орчим хувь, work_mem-ийг асуулгын төрөлд тохируул.
- Хуучин өгөгдлийг хуваа. Он, сараар хуваасан (partition) хүснэгт тайлангийн асуулгыг олон дахин хурдасгана.
Хамгийн хурдан асуулга бол огт ажиллуулах шаардлагагүй асуулга. Кэшээ бодолцож архитектураа зохио.
Дэд бүтцийн хэлтэс
Эдгээр алхмыг дараалуулан хийхэд ихэнх систем нэмэлт тоног төхөөрөмжгүйгээр хоёроос арав дахин хурдасдаг. Танай системийн өгөгдлийн санг шалгуулах бол манай инженерүүдтэй холбогдоорой.