烟台网站制作维护,统计局网站集约化建设方案,邢台网站建设58,如何用织梦程序制作多个页面网站1、逻辑存储结构 2、架构 a. 内存结构 Change Buffer的意义是什么?
与聚集索引不同#xff0c;二级索引通常是非唯一的#xff0c;并且以相对随机的顺序插入二级索引。同样#xff0c;删除和更新可能会影响索引树中不相邻的二级索引页#xff0c;如果每一次都操作磁盘二级索引通常是非唯一的并且以相对随机的顺序插入二级索引。同样删除和更新可能会影响索引树中不相邻的二级索引页如果每一次都操作磁盘会造成大量的磁盘IO。有了ChangeBuffer之后我们可以在缓冲池中进行合并处理减少磁盘IO。 b. 磁盘结构 c. 后台线程 3、事务原理
事务是一组操作的集合它是一个不可分割的工作单位事务会把所有的操作作为一个整体一起向系统提交或撤销操作请求即这些操作要么同时成功要么同时失败。
事物特性
原子性 (Atomicity)︰事务是不可分割的最小操作单元要么全部成功要么全部失败。一致性 (Consistency) :事务完成时必须使所有的数据都保持一致状态。隔离性 (lsolation)数据库系统提供的隔离机制保证事务在不受外部并发操作影响的独立环境下运行。持久性 (Durability)事务一旦提交或回滚它对数据库中的数据的改变就是永久的。 a. redolog
重做日志记录的是事务提交时数据页的物理修改是用来实现事务的持久性。
该日志文件由两部分组成:重做日志缓冲(redo log buffer)以及重做日志文件redo log file) ,前者是在内存中后者在磁盘中。当事务提交之后会把所有修改信息都存到该日志文件中,用于在刷新脏页到磁盘,发生错误时进行数据恢复使用。 b. undolog
回滚日志用于记录数据被修改前的信息作用包含两个∶提供回滚和MVCC(多版本并发控制)。
undo log和redo log记录物理日志不一样它是逻辑日志。可以认为当delete一条记录时,undo log中会记录一条对应的insert记录反之亦然当update一条记录时它记录一条对应相反的update记录。当执行rollback时就可以从undo log中的逻辑记录读取到相应的内容并进行回滚。
Undo log销毁: undo log在事务执行时产生事务提交时并不会立即删除undo log因为这些日志可能还用于MVCC。
Undo log存储: undo log采用段的方式进行管理和记录存放在前面介绍的 rollback segment回滚段中内部包含1024个undo log segment。
4、MVCC
a. 基本概念
当前读读取的是记录的最新版本读取时还要保证其他并发事务不能修改当前记录会对读取的记录进行加锁。对于我们日常的操作select ... lock in share mode(共享锁)select... for update、update、insert、delete(排他锁)都是一种当前读。
快照读简单的select (不加锁就是快照读快照读读取的是记录数据的可见版本有可能是历史数据不加锁是非阻塞读。
Read Committed:每次select都生成一个快照读。Repeatable Read:开启事务后第一个select语句才是快照读的地方。Serializable:快照读会退化为当前读。
MVCC全称Multi-Version Concurrency Control多版本并发控制。指维护一个数据的多个版本使得读写操作没有冲突快照读为MySQL实现MVCC提供了一个非阻塞读功能。MVCC的真体实现还需要依赖于数据库记录中的三个隐式字段、undo log日志、readView,
b. 隐式字段 c. undo log
undo log 日志
回滚日志在insert、update、delete的时候产生的便于数据回滚的日志。当insert的时候产生的undo log日志只在回滚时需要在事务提交后可被立即删除。而update、delete的时候产生的undo log日志不仅在回滚时需要在快照读时也需要不会立即被删除。
undo log 版本链不同事务或相同事务对同一条记录进行修改会导致该记录的undolog生成一条记录版本链表链表的头部是最新的旧记录链表尾部是最早的旧记录。 d. read view
ReadView (读视图)是快照读SQL执行时MVCC提取数据的依据记录并维护系统当前活跃的事务未提交的) id。
ReadView 中包含了四个核心字段 不同的隔离级别生成ReadView的时机不同: READ COMMITTED 在事务中每一次执行快照读时生成ReadView。 REPEATABLE READ 仅在事务中第一次执行快照读时生成ReadView后续复用该ReadView,