在单个MySQL或MariaDB事务中可以使用多少个查询

时间:2016-06-24 12:38:41

标签: php mysql zend-framework php-5.5

在单个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;
}

1 个答案:

答案 0 :(得分:4)

请参阅innodb_log_buffer_size的手册页。该设置通常默认为8M或16M。

查看您当前的尺寸:

SHOW VARIABLES LIKE "%innodb_log_buffer_size%";

可以设置为GB范围。缺点是它消耗了系统内存。好处是,在将其刷新到磁盘之前可以将更多的东西挤进去。因此,磁盘I / O被推迟并以更大的块进行,而不是更频繁的更小的块。

较高的值将提供更好的性能,与大型文件副本的性能明显优于相同的数据大小但超过100到1000个文件没有区别。当然,这是一个主要的过度简化。这些事务仍然需要innodb日志本身的开销来处理。

要查看日志缓冲区被认为太小的次数(“在继续之前刷新缓冲区的次数”):

SHOW GLOBAL STATUS LIKE 'innodb_log_waits';