文章目录
索引
索引也是数据,是用来描述存放了哪些数据的数据
索引会随着我们内容的变化而变化
缺点:创建索引,修改索引,需要消耗额外的资源(cpu 磁盘 内存),资源消耗变多
索引不是越多越好,索引是建立在表上面,建立在表的列上面,建立在字段上面。
适合建立索引的字段:
1.经常查询使用的字段
2.数据比较大的表
3.重复率不高的数据字段
b+ 二叉树 有序/hash 无序
快速索引的本质是数据结构
数据是数据,索引是索引
mysql用b+会多一点 hash是无序的,不支持索引排序
explain 模拟执行sql语句 分析执行情况 给一个报表让你看 然后让你去优化
模拟执行sql 然后去找问题
索引的创建
索引的最左匹配
面试题目
索引的最左匹配原则
索引的类型
只要是char或者varchar 大量文字适合全文索引
哪些字段适合做索引:那些经常被使用的字段作为索引
数据库优化
数据库优化思路:
sql查询速度慢的原因
1、没有索引或者没有用到索引(这是查询慢最常见的问题,是程序设计的缺陷)
2、I/O吞吐量小,形成了瓶颈效应。
3、没有创建计算列导致查询不优化。
4、内存不足
5、网络速度慢
6、查询出的数据量过大(可以采用多次查询,其他的方法降低数据量)
7、锁或者死锁(这也是查询慢最常见的问题,是程序设计的缺陷)
8、sp_lock,sp_who,活动的用户查看,原因是读写竞争资源。
9、返回了不必要的行和列
10、查询语句不好,没有优化
11.top,dstat,glances查看系统的资源占用
解决办法:
1.加硬件
cpu,内存,磁盘,网络带宽,机器
2.优化软件
1…优化linux操作系统的内核参数
2.关闭其他线程来让出cpu
3.mysql的配置参数的优化
4.sql语句的优化
子查询,连接查询—》索引
创建索引
5分表分库
分表:将一个大表分成无数个小表
分库:将多个表拆分到不同的库里,然后不同库跑到不同机器上
分区:使用分区技术
6.使用中间件缓存-----》redis
7.使用集群
面试问题:
撞库----》一种攻击方式 密码明文不能存进数据库
数据库默认的4个库 公务员库:装上mysql就有,实现mysql的管理和监控功能
数据库权限
权限的颗粒度越来越小
shell脚本 黎作文工作问题
alter修改
identified by 如果没有,就新建然后授权
5.7可用
5.8淘汰 因为又建用户又授权使用 非常不安全
想知道有哪些权力
面试题: