MySQL veritabanı tablosu için kayıtların üst sınırı nedir? Autoincrement alanını merak ediyorum. Milyonlarca kayıt eklersem ne olur? Bu tür durumlarla nasıl başa çıkılır? Teşekkürler!
MySQL veritabanı tablosu için kayıtların üst sınırı nedir? Autoincrement alanını merak ediyorum. Milyonlarca kayıt eklersem ne olur? Bu tür durumlarla nasıl başa çıkılır? Teşekkürler!
Yanıtlar:
mysql int türleri birkaç satır yapabilir: http://dev.mysql.com/doc/refman/5.0/en/numeric-types.html
işaretsiz int
en büyük değer 4,294,967,295
işaretsiz bigint
en büyük değer18,446,744,073,709,551,615
Bir tam sayının en büyük değerinin, bir tabloda depolayabileceğiniz maksimum satır sayısıyla ilgisi yoktur.
Birincil anahtarınız olarak int veya bigint kullanıyorsanız, birincil anahtarınızın veri türünde benzersiz değerlerin sayısı kadar çok satırınız olabilir, ancak birincil anahtarınızı bir tamsayı yapmak zorunda değilsiniz. , CHAR (100) yapabilirsiniz. Birincil anahtarı birden fazla sütun üzerinde de bildirebilirsiniz.
Tablo boyutunda satır sayısının yanı sıra başka kısıtlamalar da vardır. Örneğin, dosya boyutu sınırlaması olan bir işletim sistemi kullanabilirsiniz. Veya her satır 1 KB boyutundaysa, yalnızca 300 milyon satır depolayabilen 300 GB'lık bir sabit sürücünüz olabilir.
Veritabanı boyutunun sınırları gerçekten yüksek:
http://dev.mysql.com/doc/refman/5.1/en/source-configuration-options.html
MyISAM depolama motoru tablo başına 2 32 satırı destekler , ancak MySQL'i tablo başına 2664 satıra --with-big-tables
kadar destekleme seçeneğiyle oluşturabilirsiniz .
http://dev.mysql.com/doc/refman/5.1/en/innodb-restrictions.html
InnoDB depolama motorunun satır sayısı üzerinde bir sınırı yok gibi görünüyor, ancak 64 terabaytlık tablo boyutunda bir sınırı var. Buna kaç satır sığdığı her satırın boyutuna bağlıdır.
Asla veri silmemeyi öneririm. Tablolar 1000'den uzunsa tablonun sonunu kesmeyin. Planınızda, bu kullanıcının ne kadar süre işlem yapmadığı gibi gerçek bir iş mantığı olmalıdır. Örneğin, 1 yıldan uzunsa, onları farklı bir masaya koyun. Bu, yavaş bir zamanın ortasında bir bakım betiğinde haftalık veya aylık olarak gerçekleşir.
Tablonuzdaki birçok satıra rastladığınızda, tabloları parçalamaya veya bölümlere ayırmaya başlamalı ve users_2011_jan, users_2011_feb gibi eski verileri yıllara göre eski tablolara koymalı veya ay için sayıları kullanmalısınız. Ardından, bu modelle çalışacak şekilde programlamanızı değiştirin. Verileri daha az sütun halinde özetlemek için daha az bilgi içeren yeni bir tablo oluşturun ve daha sonra yalnızca kullanıcının profilini görüntüler gibi daha fazla bilgiye ihtiyacınız olduğunda daha büyük bölümlenmiş tablolara bakın. Tüm bunlar çok dikkatli bir şekilde düşünülmelidir, bu nedenle gelecekte yeniden faktör oluşturmak çok pahalı değildir. Ayrıca yalnızca sitenize her zaman gelen kullanıcıları tek bir tabloya ve asla arşivlenmiş bir tablo kümesine gelmeyen kullanıcıları koyabilirsiniz.
InnoDB'de, tablo boyutu 64 terabayt ve MySQL satır boyutu sınırı 65,535 olan 1.073.741.824 satır olabilir. Bu, maksimum satır boyutu sınırını kullanan minimum kayıt sayısıdır. Ancak, satır boyutu daha küçükse daha fazla kayıt eklenebilir.
Http://dev.mysql.com/doc/refman/5.6/en/features.html , Ölçeklenebilirlik ve Sınırlar bölümüne göre , büyük veritabanları için MySQL desteği. MySQL Server'ı 50 milyon kayıt içeren veritabanlarıyla kullanıyorlar. Bazı kullanıcılar 200.000 tablo ve yaklaşık 5.000.000.000 satır içeren MySQL Server kullanır.
The maximum row size for a given table is determined by several factors:
Bir MySQL tablosunun dahili gösterimi, depolama motoru daha büyük satırları destekleyebilse bile maksimum 65.535 bayt sınırına sahiptir. BLOB ve TEXT sütunları, içerikleri satırın geri kalanından ayrı olarak depolandığından, satır boyutu sınırına yalnızca 9 ila 12 bayt katkıda bulunur.
Veritabanı sayfasında yerel olarak depolanan veriler için geçerli olan InnoDB tablosu için maksimum satır boyutu, sayfanın yarısından biraz daha küçüktür. Örneğin, innodb_page_size yapılandırma seçeneği tarafından tanımlanan varsayılan 16KB InnoDB sayfa boyutu için maksimum satır boyutu 8 KB'den biraz daha küçüktür. “ InnoDB Tablolarındaki Limitler ”.
Bağlantı http://dev.mysql.com/doc/refman/5.7/en/column-count-limit.html
Satır Boyutu Sınırları
Belirli bir tablo için maksimum satır boyutu birkaç faktör tarafından belirlenir:
Bir MySQL tablosunun dahili gösterimi, depolama motoru daha büyük satırları destekleyebilse bile maksimum 65.535 bayt sınırına sahiptir. BLOB ve TEXT sütunları, içerikleri satırın geri kalanından ayrı olarak depolandığından, satır boyutu sınırına yalnızca 9 ila 12 bayt katkıda bulunur.
Veritabanı sayfasında yerel olarak depolanan veriler için geçerli olan InnoDB tablosu için maksimum satır boyutu, 4KB, 8KB, 16KB ve 32KB innodb_page_size ayarları için sayfanın yarısından biraz daha küçüktür. Örneğin, varsayılan 16KB InnoDB sayfa boyutu için maksimum satır boyutu 8 KB'den biraz daha küçüktür. 64KB sayfalar için, maksimum satır boyutu 16 KB'tan biraz daha küçüktür. Bkz. Bölüm 15.8.8, “InnoDB Tablolarındaki Limitler”.
Değişken uzunlukta sütunlar içeren bir satır InnoDB maksimum satır boyutunu aşarsa, InnoDB, satır InnoDB satır boyutu sınırına uyuncaya kadar harici sayfa dışı depolama için değişken uzunlukta sütunları seçer. Sayfa dışı olarak depolanan değişken uzunlukta sütunlar için yerel olarak depolanan veri miktarı satır biçimine göre değişir. Daha fazla bilgi için bkz. Bölüm 15.11, “InnoDB Satır Depolama ve Satır Biçimleri”.
Farklı depolama biçimleri, satırlar için kullanılabilir depolama alanı miktarını etkileyen farklı miktarlarda sayfa üstbilgisi ve treyler verileri kullanır.
InnoDB satır biçimleri hakkında bilgi için bkz. Bölüm 15.11, “InnoDB Satır Depolama ve Satır Biçimleri” ve Bölüm 15.8.3, “InnoDB Tablolarının Fiziksel Satır Yapısı”.
MyISAM depolama formatları hakkında bilgi için bkz. Bölüm 16.2.3, “MyISAM Tablo Depolama Formatları”.
http://dev.mysql.com/doc/refman/5.7/en/innodb-restrictions.html
Sınır yok. Yalnızca boş belleğinize ve sistem maksimum dosya boyutuna bağlıdır. Ancak bu, veritabanınızdaki bellek kullanımı ile mücadelede önlem almamanız gerektiği anlamına gelmez. Her zaman kullanım dışı olan satırları silebilen ya da belirli bir sayıdaki toplam satır sayısını tutamayan bir komut dosyası oluşturun, bin.