Mysql删库到跑路(1)--InnoDB引擎分析

之前公司的历史项目都是用的sqlserver,但是几年里遇到的坑实在太多了,从早期的高并发情况下select与update之间死锁,到无法针对单个字段设置字符集等等,另外还有出现问题需要排查时可供参考的资料较少。这边后期的项目就开始往mysql倾斜了,早期的项目重构后也采用mysql数据库。
工欲善其事,必先利其器。mysql目前最常用的是innodb引擎,这边花了几周时间去研究了一下mysql的innodb引擎,从开发的角度学习了一下相关知识,主要内容来源于《Mysql技术内幕-InnoDB存储》。下面给大家分享一下学习的内容。

Mysql常用引擎

InnoDB 支持事务,通过MVCC来控制并发,支持行锁,默认隔离级别为可重复读,通过间隙锁来避免幻读。拥有自适应哈希索引,插入缓冲,二次写等特性。
MyISAM 默认引擎,不支持事务,不支持行锁,查询效率高。因此一般在互联网项目中是不会采用的。

mysql日志

1.错误日志 错误日志中对数据库的启动、运行和关闭进行了记录。数据库出现问题时优先查看错误日志;
查看错误日志:show variables like ‘log_error’;
2.慢sql日志 需要手动开启,配置开启与超时阙值后,会记录超时的sql语句,没用过。目前我在项目中慢sql监控都是用的阿里德鲁伊druid自带的监控。
3.查询日志 记录了所有查询的日志,默认文件名为 主机名.log
4.二进制文件 就是平时常说的beanlog,记录了所有对数据库进行修改的操作。主要用于数据恢复及数据同步,平常我们也会用来排查数据修改的轨迹。默认关闭,但是开启对性能影响不大。建议开启。
查看日志文件:show master logs
5.表结构文件、表空间文件
6.重做日志文件 存储了innodb引擎的事务日志,在数据库宕机时,innodb引擎会用重做日志将数据库恢复到宕机之前,保证数据完整性。

InnoDB存储结构

表空间–段(segment)–区(extent)–页(page)
在这里插入图片描述

数据库约束

唯一约束 Unique Key
外键约束 Foreign Key
主键约束 Primary Key
非空约束 Not Null

约束与索引关系

当我们创建了一个唯一索引时,就创建了一个唯一约束;
约束是一个逻辑概念,用来保证数据完整性;索引是一个数据结构,有逻辑上概念,更是真实存在的物理文件;

InnoDB索引
B+树索引 最常用的索引,基于B+树(多叉平衡树),聚集索引其实就是一个B+树索引,叶子节点上包含所有记录信息;非聚集索引叶子节点上包含主键的值,可以通过主键的值再关联到记录信息;
哈希索引 hash结构,innodb具有自适应哈希索引,也可以主动创建哈希索引 利用哈希算法对字典进行查找,哈希冲突时采用链表,与haahmap设计思路相近;等值查询时速度快,但是范围查询与模糊查询无效;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值