HOME 首页
SERVICE 服务产品
XINMEITI 新媒体代运营
CASE 服务案例
NEWS 热点资讯
ABOUT 关于我们
CONTACT 联系我们
创意岭
让品牌有温度、有情感
专注品牌策划15年

    mysql读(mysql读锁和写锁的区别)

    发布时间:2023-04-14 07:29:45     稿源: 创意岭    阅读: 76        

    大家好!今天让创意岭的小编来大家介绍下关于mysql读的问题,以下是小编对此问题的归纳整理,让我们一起来看看吧。

    开始之前先推荐一个非常厉害的Ai人工智能工具,一键生成原创文章、方案、文案、工作计划、工作报告、论文、代码、作文、做题和对话答疑等等

    只需要输入关键词,就能返回你想要的内容,越精准,写出的就越详细,有微信小程序端、在线网页版、PC客户端

    官网:https://ai.de1919.com

    创意岭作为行业内优秀的企业,服务客户遍布全球各地,如需了解SEO相关业务请拨打电话175-8598-2043,或添加微信:1454722008

    本文目录:

    mysql读(mysql读锁和写锁的区别)

    一、mysql查询从主上读

    MySQL查询从主上读是指,将数据库的所有写操作(如插入、修改、删除等)都发往数据库的主节点,而将读操作(如查询数据)发送到数据库的从节点上。这样的好处是可以提高数据库的读取效率,同时减少单一节点的负载压力,提高数据库的稳定性。该方案需要使用MySQL集群,即将多个MySQL服务器连接在一起,构成一个分布式的数据库系统,以实现高可用、高性能、高扩展等特性。常用的MySQL集群方案包括主从复制、MGR、Galera Cluster等。

    二、mysql支持多用户同时读写吗

    数据库是支持多用户访问的,因此需要一种机制保证多个用户同时读取和修改数据时,数据不会被破坏或者失效。在MySQL中,使用锁来保证并发连接情况下的数据准确性。

    InnoDB中的锁定技术往往是基于索引实现的,如果SQL中没有利用到索引的话,往往会执行全表扫描,触发表锁。所以从效率上来说,我们应该建立合适的索引,减少锁的数据行提高并发。

    从锁的粒度上来说,可以将锁分为表锁和行锁;我们主要讨论行锁的应用。

    从行锁的角度上来说,InnoDB存储引擎实现了两种标准的行级锁,共享锁(读锁)和排他锁(写锁)。

    共享锁:当一个事务获取了某行数据的共享锁后,其他事务依然可以对这行数据加共享锁,但是不能加排他锁。

    排他锁:当一个事务获取了某行数据的排他锁后,其他事务不可以对这行数据加任何锁。

    从锁的范围来说,行锁还可以分成record lock、gap lock、next-key lock。

    record lock:索引的记录锁,是建立在索引记录上的,如果没有索引的情况,往往会触发表锁。

    gap lock:加在索引记录间隙上的锁。

    next-key lock:record lock+gap lock的组合,用来在RR级别解决幻读的问题;所以通常在insert时,会锁定相邻的键。

    回答于 2 小时前

    三、正确理解MYSQL的幻读

    一、定义

    1、幻读MYSQL官方叫法是Phantom Rows,意为鬼影行或者幻影行,请看官方定义:

    The so-called phantom problem occurs within a transaction when the same query produces different sets of rows at different times. For example, if a [ SELECT ] is executed twice, but returns a row the second time that was not returned the first time, the row is a “phantom” row.

    翻译一下:

    所谓的幻影行问题是指,在同一个事务中,同样的查询语句执行多次,得到了不同的行结果集。

    例如,如果同一个SELECT语句执行了两次,第二次执行的时候比第一次执行时多出一行,则该行就是所谓的幻影行。

    2、幻读与不可重复读的区别

    从官方的定义来看,幻读的定义侧重于多条记录,就是记录条数的变化,而不可重复读侧重于单条记录数据的变化,这样区分原因在于解决幻读需要范围锁,解决不可重复读只需要单条记录加锁

    二、InnoDB的REPEATABLE READ级别

    InnoDB支持由SQL1992标准描述的所有四个事务隔离级别,默认隔离级别是 REPEATABLE READ。

    1、快照读:

    在RR模式下,第一次读取会建立快照,后续查询会读取快照。

    这意味着,如果在同一事务中发出多个普通[ SELECT ](非锁定)语句,则这些 [ SELECT ]语句的结果也是一致的。

    2、[locking reads](锁定读取,又叫当前读)

    [ SELECT ]语句中使用 FOR UPDATE 或 FOR SHARE

    3、行锁

    在RR模式下,使用当前读以及 [ UPDATE ]和 [ DELETE ]语句会对数据记录加行锁,锁定范围取决于该语句使用的是具有唯一搜索条件的唯一索引还是范围类型搜索条件。

    三、InnoDB的READ COMMITTED级别

    1、在RC模式下,每次读取都会刷新快照,因此不能保证可重复读

    2、在RC模式下,使用当前读以及 [ UPDATE ]和 [ DELETE ]语句会对数据记录加行锁,但是不会加范围锁,间隙锁定仅用于外键约束检查和重复键检查。

    3、由于禁用了间隙锁定,因此可能会产生幻影行问题,因为其他会话可以在间隙中插入新行。

    4、 对于[ UPDATE ]或 [ DELETE ]语句, InnoDB 仅对其更新或删除的行持有锁。MySQL评估 WHERE 条件后,将释放不匹配行的记录锁 。这大大降低了死锁的可能性,但是仍然可以发生。

    5、对于[ UPDATE ]语句,如果某行已被锁定,则 InnoDB 执行“半一致”读取,将最新提交版本的数据返回给MySQL,以便MySQL可以确定该行是否符合 WHERE 条件。如果该行匹配(必须更新),则MySQL会再次读取该行,这一次 InnoDB 会将其锁定或等待获取锁。

    6、注意

    从MySQL 8.0.22开始,DML操作(增删改,通过联接列表或子查询)从MySQL授权表中读取数据,但不对其进行修改,无论隔离级别如何,都不会在MySQL授权表上获得读取锁。

    有关更多信息,请参见 Grant Table Concurrency 。

    四、乐观锁与悲观锁

    1、乐观锁

    在UPDATE的WHERE子句中加入版本信息来确定修改是否生效

    使用乐观锁时仍然需要非常谨慎,因为RR是可重复读的,在UPDATE之前读取版本号,应该使用[当前读],不能使用[快照读]

    2、悲观锁

    在UPDATE执行前,SELECT后面加上FOR UPDATE来给记录加锁,保证记录在UPDATE前不被修改。SELECT ... FOR UPDATE是加上了X锁,也可以通过SELECT ... LOCK IN SHARE MODE加上S锁,来防止其他事务对该行的修改。

    3、无论是乐观锁还是悲观锁,使用的思想都是一致的,那就是当前读。乐观锁利用当前读判断是否是最新版本,悲观锁利用当前读锁定行。

    五、总结

    1、RC级别没有范围锁一定会导致不可重复读和幻影行

    2、RR级别安全性更高,实现可重复读的方式为快照,如果需要最新数据可以选择[当前读],因此RR级别是首选

    3、不论RR还是RC级别,增、删、改的操作都会进行一次[当前读]操作,以此获取最新版本的数据,并检测是否有重复的索引。

    4、RR级别下,当前事务如果未发生更新操作(增删改),快照版本会保持不变,多次查询读取的快照是同一个

    5、RR级别下,当前事务如果发生更新(增删改),会刷新快照,会导致不可重复读和幻影行

    6、RR级别下,使用当前读,会刷新快照,会导致不可重复读和幻影行

    7、RR级别下,可以通过提交当前事务并在此之后发出新查询来为查询获取更新的快照。

    8、RR级别可以部分解决不可重复读和幻读问题

    9、其实问题的关键是你的业务逻辑需要可重复读还是最新数据

    四、易语言mysql数据读取

    “account_id='” + id + “'” '好象这多了2个引号,数字是不用加引号的

    .如果 (account_id = 角色id)

    超级列表框1.全部删除 ()

    读取人物宝宝 (“player_id='” + 角色id + “'”)

    输出信息 (“读取完毕!”)

    .否则

    信息框 (“查询失败,没有账号的角色数据!”, 该48, “提示”)

    上面这段应该是这样才对吧,查询到ID就查询另一个信息,你是查询到了就删除了,还查什么?

    以上就是关于mysql读相关问题的回答。希望能帮到你,如有更多相关问题,您也可以联系我们的客服进行咨询,客服也会为您讲解更多精彩的知识和内容。


    推荐阅读:

    girl排行榜(ohmygirl排名)

    my25777最新域名查询www

    cmyk正红色值是多少(正红色的cmyk值是多少)

    包材仓库如何管理(包材仓库如何管理员工)

    手机无人直播软件(手机无人直播下载哪四个软件)