数据库mysql的核心知识点总结

1、表级锁与行级锁的区别:
表级锁 粒度大 开销小 冲突高 并发低 不会出现死锁
2、MyISAM表锁:共享读锁、独占写锁
读操作与写操作:写操作是串行的。
InnoDB:共享锁 排他锁
3、数据库的ACID:原子、一致、隔离、持久性
数据库的隔离级别相关概念:
脏读、不可重复读、幻读
读未提交 读提交 可重复读 串行

其他锁:
意向共享锁、意向排他锁:解决行锁与表锁的共存
间隙锁:解决可重复读
排他锁
4、5.7版本后 并行复制(binlog),解决数据库集群之间同步耗时的痛点。
5、查询优化关键点:优化数据访问——减少查询命中的数据量及访问的列
可以的情况下多用limit
6、执行过程优化:缓存/内连接高于外连接/覆盖索引——减少回表
7、预发解析器和预处理——解析树
8、join buffer缓存所有列 而不是只是join列 —— join buffer-size的设置
9、排序:索引排序、firesort,若数据过大,独立排序后再进行合并。
——sort buffer-size的设置
10、二次排序 排序字段读取先排序+随机IO ——一次排序:存储换时间。
11、MySAM count快 是因为有一个内置计数器 带where条件后就变慢了
12、优化关联查询:多余的索引,group order by
一个表的列 才有可能使用索引
13、关于子查询:尽可能由join替代 or 缓存
——子查询会产生中间表
优化limit——使用覆盖索引+join关联
14、尽量使用union all
15、用户自定义变量推荐使用
16、分区表:patition by
分区基数<5.7:1024
5.7+ 8196?

17、深入说明分区表:
17.1、早起为整数,分区字段有主键or唯一索引,所有主键和唯一索引都必须包含进来
分区表无法使用外键约束
17.2、分区表实现原理:多个底层表+句柄标识
17.3、分区表类型:范围分区、列表分区、列分区——普通列表不接受表达式、hash分区、key分区、子分区
18、数据库服务器的一些参数设置:
connection:max-connections max-user-connection
back_log:暂存的链接数(类比java线程池的相关参数设置)
wait-timeout interative-time
19、log-bin bin-log sync-binlog generater-log slow-query-log
bin_log_format log_qiery_time
20、binlog=>隶属于mysqlserver 特点:原始逻辑 追加写
innodb redo/undo
A:原子性 undolog
D:持久化:redolog

redo:物理写 循环写

存储写的区域分层:
buffer pool==> LogBuffer=>OSBuffer ==>Log files(磁盘)

binlog主要在主从等数据库集群环境等试用 redolog 异常整机

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值