首页 >

Mysql高并发,数据乱窜? |mysql 当前日期后一天

mysql只有部分乱码,mysql spark 大数据,xcode mysql数据库,mysql面试基础知识,php分页保存mysql,mysql 当前日期后一天Mysql高并发,数据乱窜? |mysql 当前日期后一天

不过,mysql默认的隔离级别是Repeatableread。会出现幻读。如果是Readcommited,会出现不可重复读。

如下:

==============================================================

隔离级别————–脏读—不可重复读—幻读

==============================================================

未提交读(Readuncommitted)可能可能可能

已提交读(Readcommitted)不可能可能可能

可重复读(Repeatableread)不可能不可能可能

可串行化(Serializable)不可能不可能不可能

==============================================================

什么是不可重复读呢?

在一个事务中,第一次读和第二次,有可能读到的同一条数据不一致。

比如:

begin

selectnamefrombwherecol=5;

比如结果为:xiaoli

updatebsetinfo=’abc’wherecol=5andname=’xiaoli’;

大家并没有修改,col=5的name字段,但是再次读这条数据的时候

selectnamefrombwherecol=5;

这里结果,可能是’zhangsan’。

commit

为什么这样呢?当你这个事务在执行的过程中,其他事务提交了一个update,修改了col=5这条数据。

什么是幻读呢?就是在一个事务中,已经对符合条件的数据进行了变更,但是提交前再次读取的时候,还会有满足要求的数据,因为在你的事务过程中,有其他的事务进行了新数据的提交,导致你又出现了满足条件的数据。

比如:

begin

selectcount(*)frombwherecol=5;

比如一共三条

updatebsetcol=10wherecol=5;

提示已经更改了3行数据。

这时候已经修改但是没有提交,

selectcount(*)frombwherecol=5;

发现,又出现了一条。

commit

就会发现怎么还有一条没有更新到呢?

这就是幻读。

如果你非要解决这个问题的话,setglobaltransactionisolationlevelserializable;

这种情况下,偶在一个事务中执行的时候,其他事务只能等待。哪怕偶只执行了一个select语句。

但是这种级别,基本上谈不上高并发,也高并发不起来。因此一般生产只能在高并发和事务上做一个平衡。

不知道你说的是不是这个问题,这种问题需要程序去配合当前的事务级别。


Mysql高并发,数据乱窜? |mysql 当前日期后一天
  • 大数据、云计算、物联网、区块链相关知识概念是什么?对未来的生活有哪些影响? - 网络|
  • 大数据、云计算、物联网、区块链相关知识概念是什么?对未来的生活有哪些影响? - 网络| | 大数据、云计算、物联网、区块链相关知识概念是什么?对未来的生活有哪些影响? - 网络| ...

    Mysql高并发,数据乱窜? |mysql 当前日期后一天
  • 2021年国家公务员考试常识备考之大数据? - 网络|
  • 2021年国家公务员考试常识备考之大数据? - 网络| | 2021年国家公务员考试常识备考之大数据? - 网络| ...

    Mysql高并发,数据乱窜? |mysql 当前日期后一天
  • 本科,大学,参加大数据培训半年,之后不断投简历,二面过几次,不成,为什么? - 网络|
  • 本科,大学,参加大数据培训半年,之后不断投简历,二面过几次,不成,为什么? - 网络| | 本科,大学,参加大数据培训半年,之后不断投简历,二面过几次,不成,为什么? - 网络| ...