2016-06-24 5 views
2

Wie viele Abfragen können in einer einzigen MySQL/MariaDB-Transaktion verwendet werden?Wie viele Abfragen können in einer einzigen MySQL- oder MariaDB-Transaktion verwendet werden

Gibt es ein Limit für die Anzahl der Abfragen in einer Transaktion? Derzeit habe ich mit einem großen ZF1-Projekt eine Transaktion mit 175.000 Anfragen getestet und es funktioniert gut!

Die Transaktion wird einmal pro Monat ausgeführt, aber die Anzahl der Abfragen kann in Zukunft erhöht werden.

Gibt es ein Limit für die Anzahl der Abfragen oder ein Leistungsproblem bei der Erhöhung des Transaktionsvolumens?

$db = Zend_Db_Table_Abstract::getDefaultAdapter(); 

// begin database transaction 
$db->beginTransaction(); 

try { 
    // here comes the bulk processing with insert, update and delete queries 
    $this->monthlyBatchProcessing(); 

    // commit all changes 
    $db->commit(); 
} catch (Exception $ex) { 

    // rollback changes upon exception 
    $db->rollBack(); 

    throw $ex; 
} 
+0

http://dba.stackexchange.com/ Fragen/19569/mysql-transaction-size-wie-groß-ist-zu-groß – ShiraNai7

+0

meinst du 175.000 UPDATES UND INSERTS.Ich habe noch nie ein Projekt in den letzten 18 Jahren mit so vielen Abfragen in einer einzigen Transaktion gesehen. Es muss ein anderes Problem geben. –

+0

@BerndBuffen - ja! 175.000+ Abfragen mit einer Mischung aus Einfügen, Aktualisieren und Löschen. Was werden die Probleme sein? – rajukoyilandy

Antwort

3

Siehe Handbuch Seite für innodb_log_buffer_size. Die Einstellung ist in der Regel auf 8M oder 16M voreingestellt.

Ihre aktuelle Größe:

SHOW VARIABLES LIKE "%innodb_log_buffer_size%"; 

Es kann in den GB-Bereich eingestellt werden. Der Nachteil, es nimmt den Systemspeicher. Der Vorteil ist, dass mehr hineingequetscht werden kann, bevor es auf die Festplatte gespült wird. Daher wird die Platten-E/A verschoben und in größeren Blöcken im Vergleich zu häufigeren kleineren Blöcken ausgeführt.

Ein höherer Wert liefert eine bessere Leistung, nicht anders als eine große Dateikopie, die wesentlich besser ist als die gleiche Datengröße, aber über 100 bis 1000 Dateien. Zugegeben, das ist eine große Übervereinfachung dafür. Die Transaktionen haben immer noch den Overhead des innodb-Protokolls selbst zu bewältigen.

Um zu sehen, wurde die Anzahl der Male der Protokollpuffer als zu klein sein („die Anzahl der Male wurde dieser Puffer, bevor Sie fortfahren gespült“):

SHOW GLOBAL STATUS LIKE 'innodb_log_waits'; 
Verwandte Themen