InterBase'te (2009 öncesi) maksimum tablo boyutu
Dmitry Kuzmenko, 20-Eki-2009
Müşterilerimizden biriyle ilginç bir teknik destek olayı üzerinde çalışırken, gerçek maksimum satır sayısının belirtilen sınırdan farklı olduğunu bulduk.
Dokümantasyon setinde [InterBase 6 için Operasyon Kılavuzu, sayfa 27, InterBase Spesifikasyonu] şunları okuyabiliriz:
“Tablo başına maksimum satır ve sütun sayısı: Tasarım gereği, 2^32 satır, çünkü satırlar tablo başına 32-bit işaretsiz tamsayı ile numaralandırılır.”
Elbette, satırlar 32-bit tamsayı ile numaralandırılır. Ne yazık ki, aslında hiçbir tablo 2 milyar kayıt sınırına ulaşamaz - yalnızca bir sütunu olan tablo bile.
Bu davranışın nedeni, yeni (eklenen) kayıt için boş alan hesaplama algoritmasındadır - tamsayı taşması meydana gelebilir ve interbase.log dosyasında şu hata mesajını görürsünüz:
pointer page vanished from DPM_next (249)
Ve gerçek şu ki, veritabanı sayfa boyutu veya satır boyutu bu sınırı etkilemez. Sınır, her zaman aynı olan (~36,6 gigabayt) sihirli bir tablo boyutudur ve herhangi bir veritabanı sayfa boyutu için sayfa olarak hesaplanabilir:
Bir tablo için maksimum sayfa sayısı şu şekilde hesaplanabilir:
MaxDataPageCount = (MaxInt / PageSize) * 17.476
MaxInt, elbette, = 2147483647. PageSize yerine veritabanı sayfa boyutunuzu koyun ve sonuç, herhangi bir tablo için kaç sayfa ayrılabileceğini gösterecektir.
Örneğin, 4K sayfa boyutuna sahip bir veritabanında tablo yaklaşık 9 milyondan fazla veri sayfasına sahip olamaz.
Kayıt sayısı açısından bakıldığında, 2 tamsayı sütunu olan bir tablo 600 milyondan (!) fazla kayda büyüyemez (her kaydın 14 bayt başlığı olduğunu unutmayın).
Kafanız mı karıştı? MaxDataPageCount’u PageSize ile çarpın ve sonucu en büyük tablonuzun ortalama kayıt boyutuna bölün - bu tablonun sınırı ne zaman aşacağını ve veritabanınızın çalışmayı durduracağını bileceksiniz.
Bu sınır yalnızca Firebird 2’de düzeltildi. InterBase 2007’de hâlâ mevcuttur.
Bu sayfadaki bilgilerle ilgili sorularınız veya önerileriniz varsa, araştırma ekibimizle [email protected] adresinden iletişime geçmekten çekinmeyin. InterBase veya Firebird ile ilgili ilginç ve/veya tuhaf şeyler hakkında her türlü bilgiyi de memnuniyetle karşılıyoruz.