MySQL Sharding ve MySQL Kümesi


13

Yalnızca performans göz önüne alındığında , bir MySQL Kümesi MySQL çözümünü parçalayan özel bir veriyi yenebilir mi? parçalama = yatay bölümleme

Parçalamaya atıfta bulunduğumda, örneğin uygulama katmanında yapılan parçalanmayı, örneğin kayıtları bağımsız MySQL örnekleri arasında eşit olarak dağıtmayı düşünüyorum. İki sunucu için olabilir (anahtar mod 2).

Yanıtlar:


21

Açıklama: MySQL Kümesi üzerinde çalışan bir MySQL çalışanıyım.

MySQL Kümesinin, MySQL + InnoDB'nin kırılandan daha yüksek verim / ana bilgisayar elde edebileceğini söyleyebilirim:

  • Sorgular basit
  • Tüm veriler hafızaya sığar

Gecikme açısından, MySQL Kümesi, parçalanmış MySQL'den daha kararlı bir gecikmeye sahip olmalıdır. Yalnızca bellek içi veriler için gerçek gecikme benzer olabilir.

Sorgular daha karmaşık hale geldikçe ve veriler diskte depolandıkça, performans karşılaştırması daha karmaşık hale gelir. Daha spesifik bir yanıt almak için, uygulamanız ve gerçekleştirdiğiniz sorgular ile ana bilgisayar sayısı ve veri hacmi hakkında daha fazla bilgi vermeniz gerekir. MySQL Kümesi yakın zamanda paralel yerelleştirilmiş sorgu yürütme (AQL) kazanmıştır.

MySQL Kümesi şu anda 48 ana bilgisayardan 'parçalama' ile sınırlıdır. Parçalanmış MySQL'in teoride sınırı yoktur. Ancak, belirli bir hedef işlem hacmi için, parçalanmış MySQL ana bilgisayarlarından daha az MySQL Kümesi ana bilgisayarı gerekebilir.

Performans dışındaki alanlara baktığınızda daha ilginç farklılıklar vardır:

  • MySQL Kümesi tüm kırıklarda rasgele sorguları destekler
  • MySQL Kümesi tüm kırıklarda rasgele işlemleri destekler
  • MySQL Kümesi, parçaların otomatik yük devretme ve kurtarma ile senkronize çoğaltılmasını destekler
  • MySQL Kümesi çevrimiçi ekleme düğümünü (küme genişletme) destekler
  • Sharded MySQL, daha çok 'kendiniz yapın'

Uygulamanızın içinde parçalama yapmak size maksimum ölçeklendirme potansiyeli verir, ancak karmaşıklık ekler ve çapraz parça sorguları ve işlemleri açısından esnekliğinizi sınırlar. Parçalarınız erkenyse, sizin için bazı sorunların kökü olabilir. MySQL Kümesi, uygulamanızı yalnızca tek parça olarak sınırlamak zorunda kalmadan parçalamanın bazı avantajlarından yararlanmanızı sağlar.

Önceki cevapla ilgili olarak, birkaç açıklama:

"MySQL Kümesi ACID-şikayeti olsa da, bileşik anahtarlı veriler için uygun bir depolama motoru sağlamaz."

MySQL Kümesi bileşik birincil ve ikincil anahtarları destekler. Bu konuda 'neyin uygun' olmadığından emin değilim. Belki bir önceki poster açıklayabilir?

"Belirli bir veri düğümü kümesinde aynı anahtar özelliklere sahip verilerin depolanması için aşağıdakileri yapabilirsiniz:

  1. Yalnızca aynı temel özelliklere sahip verileri barındırmak istediğiniz veri düğümlerini bırakarak tüm veri düğümlerini çevrimdışına alın.
  2. Yalnızca seçili veri düğümlerinizi dolduran MySQL Kümesine verilerinizi yükleyin
  3. Tüm veri düğümlerini tekrar çevrimiçi duruma getirin "

Bu yanlış. Veri dağıtımı, hangi düğümlerin herhangi bir zamanda çevrimiçi olacağından bağımsızdır. MySQL Kümesi, tanımladığınız optimizasyonları desteklemek için çeşitli veri dağıtım şemalarını destekler. MySQL Kümesi'ndeki veri dağıtımını bir blog yazısında açıklarım: MySQL Kümesi'ndeki veri dağıtımı


Hey, Frazier. Verdiğiniz bağlantıyı okudum. Sadece açıklama için, 'bileşik anahtar' yorumum benzersiz olmayan dizinlere dayanıyordu. İşverenimin şirketi 2007 yılının ilk çeyreğinde MySQL Kümesi'ni denedi ve düşük performans nedeniyle beğenmedi. IMHO, müşterinin anahtarlar (küçük kardinallikler) ve sorguları için zayıf seçimleriydi. MySQL Kümesi, bağlantınıza bağlı olarak o zamandan beri daha fazla olgunlaşmış olmalıdır. İkinci ifademe gelince, kaç tane MongoDB kullanıcısı belirli kırıkları dolduruyor. İşverenimin bazı müşterileri bunu özel MySQL kurulumlarıyla yaptı.
RolandoMySQLDBA

Bağlantınızda, eşleşen satırların bir tablo parçasında saklanacağı garanti edilmediğinden, budanamayan 'sıralı bir dizin taramasından' bahsetti. Bu nedenle, verilerin yayılacağı yerleri en aza indirmek için verileri belirli parçalara (veri düğümleri) izole etmeyi öneriyordum. Cevabınız MySQL Kümesinin olumlu yanını ortaya çıkardığından, yayınlanan orijinal soruya daha iyi uyuyor. Cevabım, dikkat, karamsarlık ve bugün MySQL Küme gücünün biraz naif olması lehinde.
RolandoMySQLDBA

Benim ranting ve çılgın yerine, cevabınız için +1 !!!
RolandoMySQLDBA

Merhaba Rolando, İfadelerinizi netleştirdiğiniz için teşekkürler. Tüm veri düğümleri söz konusu olduğu için, budanmamış sıralı dizin taramalarının Küme'de 'pahalı' olduğu doğrudur. Düşük kardinalite endekslerindeki bu taramaların herhangi bir sistemde pahalı olacağı anlaşılıyor, ancak Küme'de gözle görülür bir şekilde pahalı hale geldi. Dikkatiniz ve karamsarlığınız şüphesiz sizi bir kereden fazla kurtardı :) +1 için teşekkürler
Frazer Clement
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.