Veritabanları büyüyünce her şey karmaşıklık kazanır:
- Bakım pencerelerinin büyütülmesi veya yeniden planlanması gerekiyor
- yedeklemeler (günün sonundaki tam yedekleme çok saçma bir zaman alıcı haline gelir, bu nedenle bir farkına veya hatta günlük yedeklemesine ihtiyaç duyar ve haftada bir, belki de ayda bir kere tam doldurma yapmanız gerekir)
- performanslar bakım zaman alıcı olur (çok milyon satırlık bir masa üzerinde bir endeks oluşturmak yürütmek için önemsiz bir zaman gerektirmez) ve yeniden planlanması gerekir ve masa genişse daha kötüleşir ...
- Ve 100Gb yedeklemesini ağ üzerinden iletmek, bir parça kek dediğim şey değildir - özellikle ağ (bilinmeyen bir nedenden dolayı) 75 Gb işaretine bağlantıyı bırakma konusunda inatçıysa ... (bir kurulumla oldu) ağdaki eşlenmiş bir sürücüye yedekleme yapıyordu - ağ) ...
Peki bununla ilgili ne tür veriler yapmalı? HER ŞEY. Satır boyutlarının gerekenden daha büyük kullanılması, satırların sayfaya birden fazla kaydın kaydedilemeyecek şekilde olması durumunda veritabanı sayfalarının gerekenden önce doldurulmasına ve hatta boşa harcanmasına neden olur. Sonuç, yazmak ve okumak için daha fazla sayfa gerekir, önbelleğe almak için daha fazla RAM belleği kullanılır (daha büyük kayıtlar daha büyük bellek gerektirir). Veri türleriniz diskten gerekenden daha büyük olarak belirtildiğinden, dizinleriniz de aynı soruna neden olur - özellikle, oluşturulan 2 BIGINT sütun birincil anahtarını kümelendiyseniz, oluşturulan diğer tüm dizinler bu birincil anahtarı tanımlarına dolaylı olarak kopyalar.
Milyonlarca satırlık bir tablodaki bazı sütunların, hatta FK'ed'i milyonlarca sıraya çıkaracak küçük bir tabloya sahip olduğunu biliyorsanız, verilerini depolamak için 4 baytlık bir tamsayıya ihtiyaç duymaz, ancak 2 bayt olur. yeterli - SMALLINT kullanın . 0-255 aralığında değerler yeterliyse, TINYINT . Evet / Hayır bayrağı? Orada BIT .