MySql
2021-03-29 10:09:29 106 举报
AI智能生成
登录查看完整内容
MySQL是一个开源的关系型数据库管理系统,由瑞典的MySQL AB公司开发,现在属于Oracle公司。它使用结构化查询语言(SQL)作为访问和管理数据的主要方式。MySQL被广泛应用于各种应用中,包括网站、企业级软件、嵌入式系统等。 MySQL具有高性能、稳定性强、易于使用和扩展等优点。它支持多用户并发操作,可以处理大量的数据,并且提供了丰富的数据类型和函数,以满足不同的数据处理需求。此外,MySQL还具有良好的安全性,支持用户权限管理和数据加密等功能。 总的来说,MySQL是一个功能强大、性能优秀的数据库管理系统,是构建各种应用的理想选择。
作者其他创作
大纲/内容
存储引擎
MyISAM
InnoDB
SQL语句在MySQL的执行过程
大体两部分
server
连接器
和发起请求的客户端简历连接span style=\
分析器
优化器
优化你的sql优化联合索引优化join 小表驱动大表
执行器
Buffer Pool机制
MySql事务和锁
ACID
并发事务带来的问题
事务隔离级别
锁
性能层面
乐观锁
悲观锁
数据库层面
读锁
写锁
数据操控力度
表锁
行锁
间隙锁
临键锁
概念性:InnoDB的行锁是针对索引加的锁,不是针对记录加的锁。并且该索引不能失效,否则都会从行锁升级为 表锁。
锁优化建议
尽可能让所有数据检索都通过索引来完成,避免无索引行锁升级为表锁 \t合理设计索引,尽量缩小锁的范围 \t尽可能减少检索条件范围,避免间隙锁 \t尽量控制事务大小,减少锁定资源量和时间长度,涉及事务加锁的sql尽量放在事务最后执行 \t尽可能低级别事务隔离
MVCC机制
undo版本链
read-view一致性视图
版本比对规则
Buffer Pool缓存
流程图
补充: 日志IO 是顺序存储在磁盘数据IO 是随机存储在磁盘
MySql
索引
数据结构
二叉树
红黑树
BTREE
Hash
B+TREE
磁盘
寻道(慢)
旋转(快)
索引最佳使用原则
联合索引不要建太多
全值匹配
最左前缀原则
不要在索引上进行计算
覆盖索引
Like %%
索引下推
索引优化
order by
filesort
单路排序
双路排序
group by
生成临时表
limit
select * from a where id > 9000 limit 5
根据id优化
join
用索引关联的两张表 NLJ算法
没走索引关联的两张表 BNL算法
尽量不要同时关联多张表
count
* 1 id name
工具
trace查询性能
cost 成本
能用java做的尽量用java
设计索引原则
联合索引尽量覆盖条件
不要在数字上建立索引
Explain优化工具
type
key
Extra
慢查询
日志
bin-log
防止误操作删库
redo
undo
一致性视图 read-view
0 条评论
回复 删除
下一页