SORU
2 Mart 2010, Salı


MySQL performans UUID?

MySQL veritabanı için birincil anahtar olarak UUID değerleri kullanarak düşünüyoruz. Veri eklenen onlarca, yüzlerce, veya uzak bilgisayarları hatta binlerce üretilen ve saniyede 100-40,000 ekler oranında eklenir, ve asla herhangi bir güncelleme yapacağız.

Veritabanı genellikle bir veri değil, büyük bir veritabanı itlaf etmeye başlamadan önce 50M kayıtları geçici değil, küçük ya da alacak. Ayrıca, eğer ne yaptığımızı daha iyi bir motor varsa bunu değiştirmeye açık olmamıza rağmen, Bunu çalıştırmak için planlama yapıyoruz.

Java Tip 4 UUID ile gitmek istedik, ama test bazı garip davranışlar görmeye başladık. Bir ikilik(36) olarak depoluyoruz ve ben artık emin değilim, ne kadar iyi olsa da ikili(16) - kullanarak daha iyi olacağımızı biliyoruz.

En büyük soru: ne kadar kötü bu rastgele veri 50M kayıtları ne zaman dizini berbat mı? En soldaki bit zaman damgalı olduğu takdirde kullansak daha iyi, tip-1 UUID bir örnek olurdu? Ya da belki de olacak biçimde tamamen hendek ve isteğe bağlı bir isim birincil anahtarları düşünmeliyiz?

MySQL dizin/birincil anahtar olarak depolanır olacak biçimde farklı performans hakkında genel düşünceler/ipuçları arıyorum. Teşekkürler!

CEVAP
28 EYLÜL 2011, ÇARŞAMBA


İşimde, Mm olarak UUID kullanıyoruz. Tecrübelerime dayanarak sana şunu söyleyebilirim Mm (Sunucu arada SQL) olarak kullanmayın.

1000'den daha az kayıt varsa;ok s şeylerden biri, Ama milyonlarca insan varsa, yapabileceğiniz en kötü şey. Neden? UUID sıralı değil, her seferinde yeni bir kayıt eklenir çünkü MSSQL doğru sayfasında kayıt eklemek ve sonra yeni kayıt eklemek lazım. Bu çok çirkin sonucu sayfalarında tüm farklı boyutlarda bitiyor ve şimdi de-parçalanma yapmak için periyodik elimizde parçalanmış bitmiş.

Kullandığınızda bir otomatik artış, MSSQL hep gitmek son sayfa ve sonu ile eşit büyüklükte sayfalar (teorik olarak) yani performans için seçin bu kayıtlar çok daha iyidir (çünkü Ekler değil blok tablo/sayfa için çok uzun).

Ancak, Mm olarak UUID kullanarak büyük avantajı ise DBs kümeleri varsa, birleştirirken çatışmalar olmayacak.

Şu modeli tavsiye ederim: 1. PK İNT Kimlik 2. Ek sütun otomatik olarak UUID olarak oluşturulan.

Bu şekilde, süreç mümkün birleştirme PK sadece iyi performans veren bir şey geçici olacağını da GERÇEK anahtarı olacaktır UUİD ().

Bu yardımcı olur umarım

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • 1881 Animation

    1881 Animati

    5 EKİM 2013
  • jpmkm1

    jpmkm1

    4 NİSAN 2008
  • Xcode programming tutorials

    Xcode progra

    17 EYLÜL 2006