PostgreSQL diskte yeni kayıtları nasıl fiziksel olarak sıralar (birincil anahtarda bir kümeden sonra)?


9

PostgreSQL'in diskteki kayıtları nasıl sipariş ettiğini bilmeniz gerekir. Bu durumda, dokümanlarda belirtildiği gibi dizin kombinasyonundan yararlanmak istiyorum , anladığım kadarıyla eşleşen satırları almak için bitmap'leri kullanıyor ve bunları fiziksel konumlarına göre döndürüyor. Söz konusu tablo birincil anahtarı ile kümelenmiştir.

Anladığım kadarıyla, PostgreSQL bir kümeleme bittikten sonra otomatik olarak kümeleme yapmaya devam etmez (ancak belirli bir dizine göre kümelenmiş olduğunu hatırlasa da). Şimdi, bu birincil anahtar olduğundan, fiziksel depolama sırasının buna göre olup olmayacağını merak ediyorum (eğer doğruysa belirli bir sorgu için avantajımıza kullanmak isterim).

Özetle, PostgreSQL yeni kayıtlarını özellikle kümeleme sonrasında nasıl sıralamaktadır?

Çok teşekkürler!

Yanıtlar:


9

Postgresql'deki satırların sabit sırası yoktur. Kayıtlar sadece boş alanların olduğu yerlere yerleştirilmez, aynı zamanda hareket edebilir. Bunun nedeni, bir satır güncellendiğinde, yeni sürümün yeni bir konumda oluşturulması ve eski sürüm vakumla kaldırılıncaya kadar eski konumunda kalmaya devam etmesidir.

CLUSTER işlemleri tüm satırları sıralar, ancak postgresql add'in satırlarını nasıl etkilediğini etkilemez. Böylece veriler sıralı kalmaz. Bununla birlikte postgresql, tablolardaki satırların sırası ile o sütunun sıralı sırası arasındaki her sütun için korelasyon olan istatistikleri tutar. Böylece planlayıcı yine de bir küme işleminden sonra bazı satırlar eklenmişse (veya güncellemeler tarafından taşınmış olsa bile), tablonun hala sıralandığını söyleyen istatistiklere dayanarak planını optimize edebilir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.