Odoo için PostgreSQL Performans Optimizasyonu: Ayarlama, Dizin Oluşturma ve İzleme

Odoo performansı için PostgreSQL'i optimize edin. Yapılandırma ayarlamayı, indeksleme stratejilerini, sorgu analizini, vakum yönetimini, bağlantı havuzu oluşturmayı ve en iyi uygulamaları izlemeyi öğrenin.

E

ECOSIRE Research and Development Team

ECOSIRE Ekibi

5 Mart 20264 dk okuma909 Kelime

Odoo için PostgreSQL Performans Optimizasyonu: Ayarlama, Dizin Oluşturma ve İzleme

Doğru şekilde ayarlanmış bir PostgreSQL örneği, Odoo yanıt sürelerini varsayılan ayarlara kıyasla 2-5 kat artırabilir. Odoo performans sorunlarının çoğu, veritabanı yapılandırmasına dayanır - varsayılan PostgreSQL ayarları, çok kullanıcılı bir ERP sistemine güç sağlamak için değil, minimum kaynak kullanımı için tasarlanmıştır.

Önemli Çıkarımlar

  • Varsayılan PostgreSQL ayarları yalnızca 128 MB paylaşılan arabellek kullanır - üretim Odoo'nun %25 RAM'e ihtiyacı vardır
  • Sıkça sorgulanan sütunlardaki eksik dizinler, tam tablo taramalarına ve sayfa yüklemelerinin yavaşlamasına neden olur
  • PgBouncer ile bağlantı havuzu oluşturma, veritabanı bağlantı yükünü %80 oranında azaltır
  • Düzenli VACUUM ve ANALYZE, tablonun şişmesini önler ve sorgu planlarının optimum düzeyde kalmasını sağlar

PostgreSQL Yapılandırma Ayarı

Bellek Ayarları

postgresql.conf öğesini donanımınıza uygun ayarlarla düzenleyin. 16 GB RAM'e sahip bir sunucu için, paylaşılan_buffers'ı 4 GB'ye (toplam RAM'in %25'i), active_cache_size'yi 12 GB'ye (toplam RAM'in %75'i), work_mem'i işlem başına 64 MB'a, bakım_work_mem'i 1 GB'ye ve wal_buffers'ı 64 MB'a ayarlayın.

Sorgu planlaması için, SSD depolama için random_page_cost'u 1,1'e (varsayılan 4.0, HDD'yi varsayar), efektif_io_concurrency'yi SSD'ler için 200'e ve daha doğru sorgu planları için default_statistics_target'ı 200'e ayarlayın.

Boyut yönergeleri:

| Sunucu RAM'i | paylaşılan_bufferlar | etkili_cache_size | çalışma_mem | |-----------|---------------|----------|----------| | 4 GB | 1 GB | 3 GB | 16 MB | | 8GB | 2GB | 6 GB | 32MB | | 16GB | 4 GB | 12 GB | 64MB | | 32GB | 8GB | 24 GB | 128 MB | | 64GB | 16GB | 48GB | 256 MB |

Bağlantı Ayarları

max_connections'ı en az Odoo çalışanları x 2 artı arabelleğe ayarlayın. 4 işçi ve 2 cron iş parçacığıyla en az 12 bağlantıya ihtiyacınız var. Yönetici araçları, izleme ve arka plan görevleri için bağlantılar ekleyin. 200 değeri konforlu bir tavan boşluğu sağlar.


Odoo için İndeksleme Stratejileri

Eksik Dizinleri Belirleme

log_min_duration_statement'ı 500 ms'ye ayarlayarak yavaş sorgu günlüğünü etkinleştirin. Daha sonra tam tablo taramalarını belirlemek için yavaş sorgu günlüğünü analiz edin.

Ortak Odoo Dizinleri

Odoo, birincil anahtarlar ve yabancı anahtarlar üzerinde otomatik olarak dizinler oluşturur. sale_order(state), account_move(state),stock_move(state), account_move(date) ve sale_order(date_order) gibi sık sık filtrelenen sütunlara dizinler ekleyin.

Çok sütunlu dizinler, yaygın filtre kombinasyonlarını iyileştirir: account_move_line(account_id, date) vestock_quant(product_id,location_id).

Durum sütunları olan tablolar için, etkin kayıtlardaki kısmi dizinler daha etkilidir; yalnızca durumun iptal edilmediği veya yapılmadığı satırları dizinler.


EXPLAIN ANALYZE ile Sorgu Analizi

Yürütme planlarını anlamak için yavaş sorgularda EXPLAIN (ANALYZE, BUFFERS) komutunu çalıştırın. Şunu arayın:

  • Sıralı Tarama: Eksik bir dizini gösteren tam tablo taraması
  • İç İçe Döngü: Büyük sonuç kümeleri pahalı olabilir
  • Sıralama: Work_mem'in diske yayılmasını aşan bellek içi sıralamalar
  • Paylaşılan okuma arabellekleri: Yüksek değerler, verilerin önbelleğe alınmadığı anlamına gelir

Genel performans katilleri:

  1. WHERE yan tümcesi sütunlarında eksik dizinler
  2. Odoo ORM tarafından oluşturulan büyük IN cümleleri
  3. Yazma sırasında yeniden hesaplamayı tetikleyen kayıtlı hesaplanmış alanlar
  4. 5'ten fazla tabloyu birleştiren karmaşık rapor sorguları

VAKUM ve Bakım

PostgreSQL MVCC, satırlar güncellendiğinde veya silindiğinde ölü kayıtlar oluşturur. VACUUM bu alanı geri alır ve istatistikleri günceller.

Odoo iş yükleri için otomatik vakumlamayı yapılandırın: maksimum 3 çalışan, 60 saniyelik uyku süresi, 0,05 vakum ölçek faktörü ve 0,02 ölçek faktörünü analiz ederek otomatik vakumu etkinleştirin. Yüksek yazma tabloları için (account_move_line,stock_move, mail_message), tablo başına daha agresif ayarlar belirleyin.

Toplam ilişki boyutlarını ve ölü grup sayılarını kontrol ederek tablo şişkinliğini izleyin. VACUUM FULL'u yalnızca aşırı şişkinlik (%50'den fazla ölü alan) için ve masayı kilitlediğinden yalnızca bakım pencereleri sırasında kullanın.


PgBouncer ile Bağlantı Havuzu Oluşturma

PgBouncer, Odoo ve PostgreSQL arasında yer alır ve ek yükü azaltmak için bağlantıları bir araya toplar. Odoo için işlemler arasındaki bağlantıları serbest bırakan işlem havuzu modunu kullanın. default_pool_size'ı 40'a ve max_client_conn'u 200'e ayarlayın. Odoo'yu doğrudan PostgreSQL yerine PgBouncer bağlantı noktasına yönlendirin.


İzleme

Temel Metrikler

  • Aktif bağlantılar: max_connections'ın oldukça altında kalmalı
  • Önbellek isabet oranı: %99'un üzerinde olmalı
  • İşlem oranı: Başlangıç düzeyi ve anormallikleri izleyin
  • Sorgu sayısı yavaş: Eşiğinizi aşan sorgular
  • Çoğaltma gecikmesi: Okuma kopyaları kullanılıyorsa
  • Disk kullanımı: Veritabanı boyutu büyüme oranı
  • Tablo şişkinliği: Tablo başına ölü demet oranı

Zaman içindeki sorgu performansını izlemek için pg_stat_statements uzantısını kullanın. Her farklı sorgu modeli için yürütme sayısını, toplam süreyi, ortalama süreyi ve döndürülen satırları kaydeder.


Sıkça Sorulan Sorular

S: PostgreSQL'in darboğaz olup olmadığını nasıl anlarım?

Yavaş sorgu günlüğünü etkinleştirin ve Odoo performans günlüklerini kontrol edin. Yavaş isteklerin çoğu yavaş sorgulara karşılık geliyorsa ayarlama yardımcı olacaktır. Sorgular hızlı ancak Odoo yavaşsa, darboğaz uygulama kodunda veya ağdadır.

S: Odoo için PostgreSQL kopyalarını kullanmalı mıyım?

Okuma replikaları raporlama sorgularını birincil veritabanından boşaltır. Odoo yerel olarak okuma/yazma bölmeyi desteklemediğinden özel yapılandırma, salt okunur sorguları kopyalara yönlendirir. Bu esas olarak çok büyük dağıtımlar için kullanışlıdır.

S: Odoo ile hangi PostgreSQL sürümünü kullanmalıyım?

Odoo sürümünüz tarafından desteklenen en son kararlı sürümü kullanın. Daha yeni sürümler, sorgu iyileştirici iyileştirmelerini ve daha iyi vakum performansını içerir. Güncel Odoo sürümleri için PostgreSQL 16 veya 17 önerilir.

S: Doğru ayarlamanın aslında ne kadar faydası var?

In our experience, moving from default settings to tuned configuration typically improves average page load times by 40-60% and reduces slow query frequency by 80-90%. İyileşme dramatik ve hızlıdır.


Sırada Ne Var

PostgreSQL ayarlama, Odoo performansı için en yüksek etkili optimizasyondur. Bellek ayarları ve indekslemeyle başlayın; bu iki değişiklik tek başına yanıt sürelerini genellikle yarı yarıya azaltır.

Veritabanı optimizasyonu yardımı için ECOSIRE ile iletişime geçin veya sürekli performans yönetimi için Odoo destek hizmetlerimizi inceleyin.


ECOSIRE tarafından yayınlandı - işletmelerin kurumsal yazılım çözümleriyle ölçeklenmesine yardımcı oluyor.

E

Yazan

ECOSIRE Research and Development Team

ECOSIRE'da kurumsal düzeyde dijital ürünler geliştiriyor. Odoo entegrasyonları, e-ticaret otomasyonu ve yapay zeka destekli iş çözümleri hakkında içgörüler paylaşıyor.

WhatsApp'ta Sohbet Et