首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

什么是REPEATABLE-READ隔离级别?

马克-to-win:既 然我们教材用mysql,我们仔细研究一下mysql缺省情况,即两个窗口都是REPEATABLE-READ(可重复读)级别的情况。两个窗口都开始事 务以后,窗口2的update,delete,insert,窗口1肯定都看不见。但双方如果都同时update,delete,insert的话,虽然 会被block住,但一旦最后两个窗口都提交,两个窗口的效果是累加的。马克-to-win:举几个例子:1)比如窗口2先要减1,虽然窗口1看不见这种变化,窗口1如果也要 减1的话,虽然当时被block住,但只要窗口2提交的话,窗口1竟然凭着select * from table能够看到累加的效果,即一共减了2。换句话说,窗口1如果不update一下,就不会看到窗口2的update的效果。2)同样道理,如果窗口 2删除了一条记录,提交以后,窗口1未提交之前,还以为这条记录存在呢。select时发现还有,但update时,不能update,也不报错。提交以 后才发觉,数据早没有了。更新半天,都是瞎忙活。马克-to-win:也好理解,因为窗口2早delete了嘛!3)如果窗口2增加一条,窗口1也想增加同样主键的这条记录 (因为看不到这条主键的记录),暂时被挡住以后,当窗口2提交,窗口1会报错,说试图增加重复键。4)窗口1想更新全部的记录为红色,同时窗口2想插入一 条蓝色的,被挡住后不能动弹键盘。窗口1必须先提交,select一下,没发觉蓝色的,等窗口2提交以后,大家都发觉,所有的都变成了红色,除了新插入的 一条是蓝色。所以还是符合提交的变化都会生效,变化的效果是累加的。5)窗口2增加一条,窗口1死活看不到这一条。即使看不见,如果愣更新这条记录的话, 会被挡在那里。马克-to-win:这时如窗口2提交,窗口1简单select,就可以看到自己update的效果。mysql的策略是,只要你叠加在别人的修改之上修改了, 在你提交之前,是可以看到这种修改的,即使你的窗口级别是REPEATABLE-READ(可重复读)。

02

MySql常用命令总结

1:使用SHOW语句找出在服务器上当前存在什么数据库: mysql> SHOW DATABASES; 2:2、创建一个数据库MYSQLDATA mysql> CREATE DATABASE MYSQLDATA; 3:选择你所创建的数据库 mysql> USE MYSQLDATA; (按回车键出现Database changed 时说明操作成功!) 4:查看现在的数据库中存在什么表 mysql> SHOW TABLES; 5:创建一个数据库表 mysql> CREATE TABLE MYTABLE (name VARCHAR(20), sex CHAR(1)); 6:显示表的结构: mysql> DESCRIBE MYTABLE; 7:往表中加入记录 mysql> insert into MYTABLE values (”hyq”,”M”); 8:用文本方式将数据装入数据库表中(例如D:/mysql.txt) mysql> LOAD DATA LOCAL INFILE “D:/mysql.txt” INTO TABLE MYTABLE; 9:导入.sql文件命令(例如D:/mysql.sql) mysql>use database; mysql>source d:/mysql.sql; 10:删除表 mysql>drop TABLE MYTABLE; 11:清空表 mysql>delete from MYTABLE; 12:更新表中数据 mysql>update MYTABLE set sex=”f” where name=’hyq’;

00
领券