在单个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 :(得分: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';