raj*_*ndy 5 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;
}
Run Code Online (Sandbox Code Playgroud)
参见手册页innodb_log_buffer_size。该设置通常默认为 8M 或 16M。
查看您当前的尺寸:
SHOW VARIABLES LIKE "%innodb_log_buffer_size%";
Run Code Online (Sandbox Code Playgroud)
可设置为GB范围。不利的一面是,它会占用系统内存。好处是可以在将其刷新到磁盘之前将更多内容挤入其中。因此磁盘 I/O 被推迟并在更大的块中完成,而不是更频繁的小块。
较高的值将提供更好的性能,这与大文件副本的性能明显优于相同数据大小但超过 100 到 1000 个文件没有什么不同。当然,这是对它的主要过度简化。事务仍然需要处理 innodb 日志本身的开销。
要查看日志缓冲区被认为太小的次数(“在继续之前刷新缓冲区的次数”):
SHOW GLOBAL STATUS LIKE 'innodb_log_waits';
Run Code Online (Sandbox Code Playgroud)