2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > 使用mysql遇到的问题【MySQL】

使用mysql遇到的问题【MySQL】

时间:2024-02-23 13:29:40

相关推荐

使用mysql遇到的问题【MySQL】

数据库|mysql教程

mysql,blog,隔离

数据库-mysql教程

uc浏览器怎么调用源码,无屏幕安装Ubuntu,Python网络爬虫题目,下载后php,.什么是seolzw

1. 幻读。很多书和blog都提到mysql 的 tx_isolate (事务隔离)为repeatable read. 并且Mysql做了next-key lock的事情防止幻读。但是如果你直接在事务中使用

asp威客源码 系统,ubuntu exp提权,大数据爬虫网址,php如何定义一个字符串,海外seo助理lzw

SELECT * from [table];

SELECT * from [table] for update;SELECT * from [table] lock in share mode;

另外介绍一下幻读:

php卡密授权源码,vscode加入头文件路径,使用ubuntu 开发,tomcat 打开多个窗口,爬虫技术犯法,iso8601 php,河源seo推广多少钱,qq号码交易网站源码,cpa单页模板lzw

幻读就是当一个事务进行查询时没有发现该记录,或者没有发现该记录被更改。结果在正在插入该记录或者真正要改该记录时,发现这条记录已经被其他事务改过了。

例如

事务1, select * from [table];

这时进行事务2, insert into [table] select xx; commit;

事务1 再执行 select * from [table]; 这里是没有 事务2 的数据的。

这里只要事务1再次执行 insert into [table] select xx; 这样就发现这个行已经存在了;这就是幻读。

2. 另外发现update的一个问题。如果使用事务, 首先select 数据然后再使用该数据进行update,有可能会有问题。一般使用 update [table] set col = col + value where …这种形式进行更新,比select col from [table]; 取到col然后再进行update [table] set col = 刚才select 出的col value + value; 这样更加正确,因为update自身可以加写锁。保证了不会幻读。

3. 另外一个问题涉及到 limit. 例如 select * from [table] limit [len] offset [offset]; 如果这里offset比较小,那么这样做是可以的。如果这里offset很大,那么这样做类似于扫表。这里需要使用where子句来加速。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。