Mar*_*kus 7 mysql sql performance transactions
我有一个非常普遍的问题:
1.)鉴于我有一个事务(在mysql中),包括修改十/十万甚至百万条记录.与非常"小"的交易相比,这类交易是否线性昂贵?或者大型交易是否会比小型交易消耗更多的资源?(换句话说,必须避免).
2.)在提交如此大的事务时,mysql上的负载是否会跳转到一个非常高的值,直到事务处理完全?
该问题主要与MySQL有关,但如果服务器"更好",那么听到它们会很有趣.是的,服务器/系统有很多来自其他进程的负载(因此它不是系统上处理的唯一事务=中/高争用).隔离级别是"更高/最高"的隔离级别(带来实际交易的所有好处).
非常感谢你
这不是一个完整的回复,我希望有人能给你一些关于这个主题的有用的提示。
但我至少可以给你一个建议。
当然,对于可序列化的隔离级别,您遇到的最大问题是,当您的事务很长时,您有很多机会让引擎自动回滚它。在可序列化隔离级别中,如果任何其他事务提交了更改受影响数据之一的内容,则事务将关闭。在序列化隔离级别中,您必须将事务视为您可能需要重做几次直到它正常为止的事情。所以...如果它很大而且你并不孤单,它可能会变得很长,或者可能无法运行。
如果我们谈论在可序列化事务中更改一百万行表的所有行,您肯定必须放置应用程序级锁或信号量(比数据库事务更高的东西),以告诉其他进程您正在执行一项繁重的任务他们应该稍等一下,让您完成这项重要任务:-)
但是,如果您可以将此过程视为每行的维护任务,并且对于您的环境来说,某些行处于新状态而另一些行尚未处于新状态这不是问题......那么请为每行执行一个事务,而不是一个大的。仅当所有受影响的行都应同时切换其状态(这就是原子性)确实很重要时,您才应该执行大型可序列化事务。很可能事实并非如此,不是吗?
| 归档时间: |
|
| 查看次数: |
501 次 |
| 最近记录: |