Nasıl işlem düzey izolasyon MySQL autocommit modunda performace etkiler?

2 Cevap php

Ben benim sunucu üzerinde çalışan bir VBulletin 4.x forum var. Bazı forum tabloları this instruction göre performans nedenleriyle InnoDb dönüştürülmüştür. Forum kendisini işlemler kullanmak (Hayır START İŞLEM veya kaynak kodu BEGIN WORK) tüm ve InnoDB tablolar sadece GÜNCELLEME sorguları kilitleme tabloları önlemek için kullanılan değildir. Forum elbette autocommit modunda çalışıyor.

Ben bu durumda READ UNCOMMITED içine varsayılan sunucu işlem yalıtım düzeyini değiştirmek ve bazı performans kazançları bu şekilde alabilirsiniz, doğru anlıyor musunuz?

2 Cevap

TL; DR: forum yavaş ise, işlem yalıtım düzey büyük olasılıkla değil bunun nedeni ve varsayılan daha başka bir şey ayarlamadan pek yardımcı olacaktır. Innodb_flush_log_on_trx_commit = Ayar 2 yardımcı, ama çöker için dayanıklılık sonuçları vardır olacaktır.

Uzun versiyon:

Ben kadar yazdım neyi HAREKET YALITIM SEVİYESİ http://mysqldump.azundris.com/archives/77-Transactions-An-InnoDB-Tutorial.html. Tüm 3 InnoDB genel makaleler Çıkış http://mysqldump.azundris.com/categories/32-InnoDB.

Sonuçta her durumda sistem geri almak mümkün olacak, bu yüzden bile UNCOMMITTED bir yazma üzerinde yapılması gereken şey değişiyor OKUYUN gerektiğini.

Işlemleri okumak için, okuma UNCOMMITTED veya OKU TAMAMLANDIĞI hızlı varsayılan YİNELENEBİLİR OKU daha çok hafif olabilir okuma işlemi için önde gelen görünümünü geri alma günlük kayıtlarının zinciri uzun zaman yavaştır, yani OKUYUN. Ama biz burada erişen bellek konuşurken akılda tutmak zorunda ve bu disk erişir aşağı yavaş.

Autocommit bir konuda: Bu diske her yazma deyimi senkronize edecektir. Eğer daha önce MyISAM kullanıyorum ve yeterince iyi olsaydı, yapılandırmak isteyebilirsiniz

[mysqld]
innodb_flush_log_on_trx_commit = 2

Lütfen my.cnf dosyasında ve sunucuyu yeniden başlatın.

Yani yapacak dosya sistemi tampon bellek için mysqld dan yazma işlemek, ancak yalnızca bir kez bir saniye olur böylece diske dosya sistemi tampon önbelleği basması geciktirebilir. Sen mysqld kazasında herhangi bir veri kaybetmezsiniz, ama donanım kazasında yazma değerinde 1s kadar kaybedebilirsiniz. InnoDB olsa, hatta donanım kazadan sonra, otomatik olarak iyileşir ve tam ASİT olmasa bile davranış, yine daha önce MyISAM ile oldu daha iyidir. O ayarı olmadan AutoCommit çok daha hızlı olacaktır.

Yes. Bu kesinlikle bazı performans kazancı verecektir. Ama sonra sen hiçbir güncellemeyi yapıyorsun elle, kaydedilmesini yapmak zorunda.

Ne i AutoCommit modu hakkında bilmek her ki performansını aşağı yapar, taahhüt üzerinde yeniden inşa etmek masalarda endeksi neden olan, db operasyonlardan sonra otomatik olarak kaydedilmesini yapacak vardır.