2022.3.16SQL优化

1、网络中进程之间如何通信?
本地的进程间通信(IPC)有很多种方式,但可以总结为下面4类:

消息传递(管道、FIFO、消息队列)

同步(互斥量、条件变量、读写锁、文件和写记录锁、信号量)

共享内存(匿名的和具名的)

远程过程调用(Solaris门和Sun RPC)
2.如何排查慢SQL?
I.分析语句是否又不必要的字段
II.查询是否命中索引等等
III.如果表数据量太大,考虑分表
3.如何优化sql?
优化表结构:尽量使用数字型字段,id不要char类型。尽量用varchar代替char,
当索引含有大量重复数据的时候,删除索引.比如性别只有男女,没必要建立索引
优化查询:避免sellect*,避免where后使用!=,or连接,
索引优化:避免建立过多的索引,使用组合索引.
4. 聚集索引和非聚集索引的区别?
i.聚集索引一个表中只能够有一个,非聚集索引可以有多个
II.聚集索引的非叶子节点存储的是键的值,value在叶子节点中存在并且通过链表依次双向连接起来,非聚集索引的非叶子节点存储的键值对,叶子节点存储的是真实数据的地址还需要回表
iii.聚集索引物理存储按照索引排序,非聚集索引物理存储不按照索引排序
5.索引为什么是B+树?
I.为什么不是平衡二叉树?
平衡二叉树每个节点存储键值和数据,树的的高度太高(一个根节点只能有2个子节点),查询IO次数多
II.为什么不是B树?
Inoodb默认页大小是16kb,B树的非叶子节点存储的是键值和数据,而B+树只有键值,同样的页大小所以能够存储更多的数据索引,B+树会更矮更胖.同时B+树的搜索效率是logn级别,比较稳定.而B树有可能是O1,也有可能更慢,不够稳定.同时区间查询的话B+树只需要遍历叶子节点的那个链表就可以.使得排序查找,范围查找更高效简单
III.为什么不是Hash索引?
Hash索引没法进行范围查询,而b+树可以
b+树支持最左前缀匹配,hash不行
Hash无法模糊查询
6.什么场景不适合去建立索引?
I.数据量少
II.数据量大量重复
III.更新比较频繁的字段不适合建立
7.Mysql遇到死锁怎么办?
首先查看日志 show engine innodb status,找出发生死锁的sql,对sql的加锁情况分析.
8.Mysql数据库cpu飙升怎么处理?
I.top命令观察是否mysql导致
II.若是mysql导致,show processlist查看那些消耗比较高的sql
III.找出消耗比较高的sql检查
iv.可以kill掉或者修改索引,重写SQL语句试试
9.一条sql查询在Mysql中如何执行?
I.先检查该条语句是否有权限,有权限会优先查询缓存
II.若没有缓存,分析器进行词法分析提取sql语句,判断sql语句是否正确有无语法错误,关键词是否正确
III.最后优化器进行权限校验,优化后返回查询结果

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值