Bazı Magento tabloları InnoDB değildir, tüm tabloları InnoDB'ye dönüştürmek güvenli midir?


16

AWS RDS Okuma Çoğaltması kullanıyorum. Magento'nun Bellek motor tablolarıyla sürekli sorunları var. Yedekleme ve okuma kopyaları için RDS InnoDB'yi seviyor. Tüm tabloları güvenli bir şekilde InnoDB olarak değiştirebilir miyim?

Ayrıca AWS'den şu uyarıyı alıyorum:

DB Örneği magento-monin-prod-db, InnoDB'ye geçirilmemiş MyISAM tablolarını içerir. Bu tablolar, zaman içinde geri yükleme gerçekleştirme yeteneğinizi etkileyebilir. Bu tabloları InnoDB'ye dönüştürmeyi düşünün. Lütfen http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Appendix.MySQL.CommonDBATasks.html#MySQL.CommonDBATasks adresine bakın.

Makul Cevap

Hala geri bildirimle ilgileniyor. Önümüzdeki 24 saat içinde herhangi bir sorun bulamazsam bunu cevap olarak ekleyeceğim. Aşağıda attığım adımlar şimdiye kadar güvenli görünüyor. En büyük endişem Magento'nun Bellek Motoru tabloları (in_tmp ile biten tablolar) ve indeksleme üzerindeki etkisi oldu.

İşte yaptığım şey:

  1. SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE (ENGINE = 'Memory' OR ENGINE='MyIsam') AND TABLE_SCHEMA='magento_db'

    • Benim için bu çoğunlukla geçici dizin tabloları ve magento modül tabloları, bu yüzden endişe edilecek kritik çekirdek tablolar çok ve şeyler fan vurursa kolayca başka bir alter tablo yürütmek yeterli yeterli tablolar döndü.
  2. Döndürülen her tablo için yürüttüm: Alter table {table-name} ENGINE=InnoDB;

Tablolarınızdan hiçbiri InnoDB değilse bunu denemek gergin olurum. Ancak, daha önce söylediğim gibi, benim örneğimde değiştirilmesi gereken sadece birkaç çekirdek tablo vardı.


Bunu uzun zamandır üretimde mi çalıştırıyorsunuz? Eğer öyleyse, nasıl gidiyor - size herhangi bir soruna neden oldu mu? Öncelikle MEMORY motoru olan * _tmp dizin tablolarını düşünmek.
Michael Parkin

1
Alışılmadık bir şey fark etmedim.
TylersSN

Harika, onayladığınız için teşekkürler - bunu bir deneyeceğiz ve geri bildireceğiz.
Michael Parkin

@michael parkin Solr aramasını kullandığımızı unutmayın. Bunun arama potansiyelini nasıl etkileyebileceğine dair diğer cevaplara bakın.
TylersSN

1
Bunu üretim tesislerimizin çoğunda (MariaDB 10.0) çalıştırıyoruz, InnoDB olarak çalışan tüm tablolar (Bellek dahil) - harika çalışıyor
Michael Parkin

Yanıtlar:


11

Aşağıdakilerden birinin doğru olduğu varsayılarak veri türünü InnoDB olarak değiştirmek iyidir:

  1. InnoDB depolama motorunun tam metin aramayı desteklediği MySQL 5.6.4+ sürümünü kullanıyorsunuz
  2. Temel MyISAM tam metin arama özelliklerine dayanan varsayılan Magento Search işlevini kullanmıyorsunuz. Bu işlevsellik başlamak zahmetli ve varsayılan Magento Arama sağlanan özellik kümesi arzulanan bir çok şey bırakıyor, bu yüzden Lucene veya Sfenks veya en iyi Algolia barındırılan arama kullanmanızı öneririz .

Şahsen ben riski en aza indirmek ve aynı zamanda diğer DB yapılandırma sapması veya sorunları kontrol etmek için Magento DB Onarım Aracı ile bunu tavsiye ederim . InnoDB ideal bir motordur, buna rağmen tam metin sınırlamaları vardır .


1
Solar aramayı kullanıyoruz. Dolayısıyla, arama açısından açık olmalıyız.
TylersSN

InnoDB'yi ideal motor olarak görmezdim. Çok fazla arama sorgunuz varsa MyISAM ile karşılaştırıldığında son derece yavaştır. Sık sık InnoDB'nin daha hızlı güncelleme yaptığını ve çoğu sorgunun güncelleme olduğunu duydum, bu yüzden daha hızlı. Tam tersini görüyorum. Sahip olduğum her site için, sorguları güncelleyen / ekleyen çok daha fazla arama sorgum var. Tüm tablolarımı InnoDB geçiş denedim ve sayfa yükleme süresi temelde hiçbir gecikme (belki 0.1 saniye) 10 saniye gitti! Her şeyi MyISAM'a dönüştürdüm çünkü hız için ideal bir motor (ve tam metin aramayı destekliyor).
Tim Eckel

Tim, ben "KIND" katılıyorum, çoğunlukla @ ben-lessani-sonassi sadece düz kanıtlanmış doğru olduğunu ve MySQL nadiren genel perf w / DİĞER sistemlerin # hatta yükte 800ms alt yanıtlar için optimizasyon gerekir AMA InnoDB anahtar b / c Mage Core DB her kullanıcı "görünüm" eylem günlüğü yazmak için artı artı Solr arama mükemmel ve kalite için en iyi :)
Bryan 'BJ' Hoffpauir Jr.

1
Peki, InnoDB olması gerekenleri dönüştürmek tüm bu yabancı anahtar ilişkilerini nasıl ele alır ve bu fkey ilişkilerinden art arda silmeye bağlı silme işlemleri ne kadar tamamlanır? Başka bir deyişle, ilişkilerin yerinde olmamasıyla bırakılacak olan çöpü nasıl ele alırsınız?
Fiasco Labs

@FiascoLabs Ben bu yorum iş parçacığı teslim beri bir süre oldu ama Q / A odak MyISAM FON InnoDB dönüştürmek. İlişkisel özelliklere sahip olanları tahmin ediyorum muhtemelen zaten InnoDB vardır. MyISAM MySQL 5.7 itibariyle FK adlı ne de İşlemleri desteklemez olsa InnoDB'nin yapar olsa SQL standardında biraz sapan
Bryan 'BJ' Hoffpauir Jr.

2

Afaik, tüm tabloları InnoDB'ye dönüştürmemelisiniz.

catalogsearch_fulltext InnoDB'nin tam metin arama desteği olmadığından, en azından MySQL 5.6'ya (iirc) kadar değil, MyISAM'de kalmalıdır.

Bununla birlikte, diğer tüm tablolar için güvenli olmalıdır.



2

MySQL varsayılan motorunu InnoDB olarak değiştirdim ve Magento tablolarımın çoğu mucizevi bir şekilde kendilerini InnoDB'ye dönüştürdü (birkaç tanesi hala MyISAM ve bazıları Bellek).

Bunu paylaşacağımı düşündüm ...

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.