mysql学习笔记(二)

存储引擎:
负责数据存储,与文件打交道,是根据mysql提供的文件访问层抽象接口定义的一种文件访问机制。

InnoDB:
5.5版本作为mysql的默认引擎。
支持事务和外键,具有提交,回滚,崩溃恢复能力。
myisam:不支持事务和外键,访问速度快。

InnoDB与myisam对比:
事务方面–>InnoDB支持事务,myisam不支持事务。
锁机制–>InnoDB支持行级锁,基于索引。myisam支持表级锁。并发能力不行。
索引–>InnoDB采用聚集索引,索引和记录一起存储。myisam采用非聚集索引。
索引和记录分开存
并发能力–>myisam写操作并发率低,读写阻塞。InnoDB读写阻塞可以通过隔离级别控制,可采用mvcc支持并发。
存储–>innodb:表元数据存在.frm文件,一个.ibd对象一个表。默认64TB,myisam表元数据存在.frm文件,MYD文 件存数据,MYI文件存索引。

myisam适用场合:
i不要事务,并发要求低,数据改动小,如配置 表,权限表,国标码表等 。
InnoDB:
要事务,行级锁对高并发有很好适应能力。数据更新频繁。
大部份场合下都使用innoDB.

InnoDB内存结构:
Buffer Pool change Buffer logBuffer adaptive hash index

Buffer Pool:
采用page管理机制,有三类page:
freePage 空闲页
clean page 正在使用页,未被修改的记录
dirty page 脏页,正在使用页,被修改的记录。
对应三类列表管理page:
free list:管理空闲缓存区。
flush list:管理 脏页,刷盘缓冲区。
lur list,管理 正在使用的缓存区,和脏页。采用lru算法,以midpoint为界,前链表为new列表区,存经常访问的数据,约占67%,后界为old列表,占37%.使用lru算法管理数据:

lur算法:
普通lur:释放空间,从尾部淘汰数据。
改进lru算法:从中间midpoint插入数据,如果数据很快被访问,向new头部移动,否则向old属部移动,进行未尾淘汰。

数据进入缓存区步骤:
来了新page,去空闲缓冲区找是否有空闲,有的话从free list删除,放入lru list,没有,lru算法淘汰未尾,释放空间给新页。

changeBuffer写缓冲区
当更新一条记录时,该记录在BP中存在, 直接在BP中修改一次内存操作,如果不存在,在changeBuffer中作内存操作。避免IO,当下次查询记录时,会进行磁盘读取。然后从cB中读取信息合并,最终载入BP中。

InnoDB磁盘:
系统表空间,创建 表的数据索引等,多个表共享。
File_pre_tablespace:独立表空间,表数据独立,一个表一个.ibd文件。支持压缩处理。
general tablespace 通用表空间,
temp表空间 临时表空间,存临时表用
undo tablespace,撤消表空间,用于事务回滚还原数据。

innodb文件存储结构
段–>区–>页–>行
一个表至少2个段,一个管理数据,一个管索引。
一个区64个连续的页,1M,表空间不足时,直接分配一个区。
页:数个row,大小16K,

binlog使用场景:
主从复制
数据恢复

binLog记录模式:
Row模式:每一行修改记录能实现主从数据同步和数据恢复,能清楚的记录每一行修改记录。缺点是日志 文件大。
statment:与row模式相关

BinLog与RedoLog区别
redolog属于innodb引擎,binlog属于mysql自带功能,并且是以二进制文件记录。
redolog属于物理日志,记录该数据页更新内容,binlog是逻辑日志,记录更新过程。
redolog是覆盖写入,binlog是追加写入。
redolog作为服务器异常宕机事务数据自动恢复使用。binlog可以作为主从复制和数据恢复使用。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值