下面的策略似乎奏效了,但我是不是忽略了什么?为什么不对大多数查询不需要数据一致性的读取密集型系统总是这样做呢?比如博客/出版系统。在我看来
- MySQL / MariaDB模式创建示例--在读密集型系统中,默认为只读取安全性和速度设置全局事务只读;
- MySQL / MariaDB模式创建示例--如果数据完整性对大多数查询不重要,则选择“最大性能集”全局事务隔离级别读取未提交;
- MySQL / MariaDB的例子.设置会话事务读写;更新table_x集field_y=10;设置会话事务只读;.
发布于 2022-11-04 20:36:17
我从来没有听说过这样一种情况,那就是,阅读是正确的选择。显然,从尚未提交的其他事务中读取更改--并且可能回滚--可能会导致大量的幻影读取和其他逻辑问题。
我倾向于将默认的事务隔离级别设置为READ,尽管这也取决于应用程序的需求。有些应用程序要求默认使用可重复读取语义。我们不能说其中一个更好,因为它取决于应用程序需要什么。
我不知道将事务访问模式设置为只读有任何性能优势。它阻止事务更改任何数据,但在我看来,如果您有代码错误,以至于您不知道给定的事务是否要更改数据,那么您就会遇到更大的问题。
InnoDB的只读模式影响整个实例,而不是单个事务.在这里阅读:https://dev.mysql.com/doc/refman/8.0/en/innodb-read-only-instance.html,我怀疑这会给一个普通的应用程序带来显着的性能好处。它必须是一个非常高流量的应用程序,因此在InnoDB只读模式中禁用的一些后台线程会造成一些瓶颈。但是在这种类型的应用程序中,您自然需要读写模式。
https://stackoverflow.com/questions/74322007
复制相似问题