-- 创建表和插入数据:
CREATE TABLE stu(
id VARCHAR(10) NOT NULL,
name VARCHAR(20) NOT NULL,
age VARCHAR(10) NOT NULL
)engine=INNODB;INSERT INTO stu(id,name,age) VALUES('1','张三','20');
INSERT INTO stu(id,name,age) VALUES('2','李四','20');
..
..
..
INSERT INTO stu(id,name,age) VALUES('50000000','王五千万','20');-- 这个表的数据量有 五千万 行.
-- ----------------------------------------------------------------
-- ----------------------------------------------------------------隔离级别为:Repeated Read 引言 1:
MVCC保存了某一时刻数据的一个快照。意思就是无论事物运行了多久,它们都能看到一致的数据。问题 1:
根据引言1:因为表特别大,MVCC怎么可能在同一时刻,快照到所有到数据,扫描全表快照也需要一定的.
那在这段时间里,另一个session在修改数据,怎么能保存数据的一致性呢?
CREATE TABLE stu(
id VARCHAR(10) NOT NULL,
name VARCHAR(20) NOT NULL,
age VARCHAR(10) NOT NULL
)engine=INNODB;INSERT INTO stu(id,name,age) VALUES('1','张三','20');
INSERT INTO stu(id,name,age) VALUES('2','李四','20');
..
..
..
INSERT INTO stu(id,name,age) VALUES('50000000','王五千万','20');-- 这个表的数据量有 五千万 行.
-- ----------------------------------------------------------------
-- ----------------------------------------------------------------隔离级别为:Repeated Read 引言 1:
MVCC保存了某一时刻数据的一个快照。意思就是无论事物运行了多久,它们都能看到一致的数据。问题 1:
根据引言1:因为表特别大,MVCC怎么可能在同一时刻,快照到所有到数据,扫描全表快照也需要一定的.
那在这段时间里,另一个session在修改数据,怎么能保存数据的一致性呢?
问题 1:
根据引言1:因为表特别大,MVCC怎么可能在同一时刻,快照到所有到数据,扫描全表快照也需要一定的时间.
那在这段时间里,另一个session在修改数据,怎么能保存数据的一致性呢?
请问一下,这个MVCC是跟LVM实现的原理是一样的吗?
2.这个--single-transaction是否能实现传说中的热备份功能呢?
3.如果以上2个成立,那么使用--single-transaction热备份,是否要把innodb的事务日志一起快照呢?请问在mysqldump里面是怎么快照事务日志呢?
1:SESSION1读出ID=1的记录,VALUE=100,得到一个数据VERSION=1;
2: SESSION1读出ID=1的记录,VALUE=100,得到一个数据VERSION=1;
3: SESSION2修改ID=1的记录,VALUE=VALUE+100,版本号加1为2,比上一个要大,那么只需更新更新操作。
4:SESSION1修改ID=1的记录,VALUE=VALUE+100,版本号加1为2,和上一个版本2一样大,修改失败。这样在并发操作的时候,第4步是失败的,这样避免了VALUE不正确的情况。
建议阅读high performance mysql