首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在只读和读未提交以及只在需要时重写MySQL默认事务模式会有好处吗?

在只读和读未提交以及只在需要时重写MySQL默认事务模式会有好处吗?
EN

Stack Overflow用户
提问于 2022-11-04 19:20:40
回答 1查看 40关注 0票数 0

下面的策略似乎奏效了,但我是不是忽略了什么?为什么不对大多数查询不需要数据一致性的读取密集型系统总是这样做呢?比如博客/出版系统。在我看来

  • 将数据库默认设置为只读模式.这将捕获编程错误,并可能提供更好的读取性能。

- MySQL / MariaDB模式创建示例--在读密集型系统中,默认为只读取安全性和速度设置全局事务只读;

  • 将数据库默认设置为最低严格事务隔离级别。这将防止锁定,并可能提高读取性能。

- MySQL / MariaDB模式创建示例--如果数据完整性对大多数查询不重要,则选择“最大性能集”全局事务隔离级别读取未提交;

  • 只覆盖确实需要写访问和/或更高事务隔离级别的查询。在读密集型系统中,这些围绕写语句的额外查询语句不会被注意到。

- MySQL / MariaDB的例子.设置会话事务读写;更新table_x集field_y=10;设置会话事务只读;.

EN

回答 1

Stack Overflow用户

发布于 2022-11-04 20:36:17

我从来没有听说过这样一种情况,那就是,阅读是正确的选择。显然,从尚未提交的其他事务中读取更改--并且可能回滚--可能会导致大量的幻影读取和其他逻辑问题。

我倾向于将默认的事务隔离级别设置为READ,尽管这也取决于应用程序的需求。有些应用程序要求默认使用可重复读取语义。我们不能说其中一个更好,因为它取决于应用程序需要什么。

我不知道将事务访问模式设置为只读有任何性能优势。它阻止事务更改任何数据,但在我看来,如果您有代码错误,以至于您不知道给定的事务是否要更改数据,那么您就会遇到更大的问题。

InnoDB的只读模式影响整个实例,而不是单个事务.在这里阅读:https://dev.mysql.com/doc/refman/8.0/en/innodb-read-only-instance.html,我怀疑这会给一个普通的应用程序带来显着的性能好处。它必须是一个非常高流量的应用程序,因此在InnoDB只读模式中禁用的一些后台线程会造成一些瓶颈。但是在这种类型的应用程序中,您自然需要读写模式。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74322007

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档