2016-06-24 5 views
2

Сколько запросов может быть использовано в одной транзакции MySQL/MariaDB?Сколько запросов может быть использовано в одной транзакции MySQL или MariaDB

Есть ли ограничение на количество запросов, используемых в транзакции? В настоящее время я тестировал большой проект ZF1, транзакцию с 175 000 + запросами и ее работу отлично!

Сделка будет выполняться один раз в месяц, но количество запросов может быть увеличено в будущем.

Есть ли ограничение на количество запросов или любую проблему с производительностью при увеличении объема транзакции?

$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/ Вопросы/19569/mysql-transaction-size-how-big-is-too-big – ShiraNai7

+0

Вы имеете в виду 175 000+ ОБНОВЛЕНИЙ И ВСТАВКИ. Я никогда не видел проект за последние 18 лет с таким количеством запросов в одной транзакции. должен быть другой вопрос. –

+0

@ BerndBuffen - да! 175 000+ запросов с комбинацией вставки, обновления и удаления. Тогда какие будут проблемы? – rajukoyilandy

ответ

3

См. Страницу руководства для innodb_log_buffer_size. Обычно для параметра установлено значение 8M или 16M.

См свой текущий размер:

SHOW VARIABLES LIKE "%innodb_log_buffer_size%"; 

Он может быть установлен в диапазоне ГБ. Недостаток, он убирает из системной памяти. Поверхность заключается в том, что в нее можно вдавить больше, прежде чем она будет сброшена на диск. Таким образом, дисковый ввод-вывод откладывается и выполняется в больших блоках по сравнению с более частыми меньшими кусками.

Более высокое значение обеспечит лучшую производительность, отличную от большой копии файла, выполняемой значительно лучше, чем тот же размер данных, но более 100 до 1000 файлов. Конечно, это серьезное упрощение. У транзакций все еще есть накладные расходы на журнал innodb, с которыми приходится иметь дело.

Чтобы увидеть, сколько раз буфер журнала был сочтен слишком мал («количество раз, что буфер продувал перед продолжением»):

SHOW GLOBAL STATUS LIKE 'innodb_log_waits'; 

 Смежные вопросы

  • Нет связанных вопросов^_^