Mysql优化的作用

Mysql优化的作用
提高网站的吞吐率,从而提升网站的性能,提高用户的体验

优化:减少磁盘IO
是指磁盘的输入和输出(Input和Output的缩写)。读/写IO,最为常见说法,读IO,就是发指令,从磁盘读取某段扇区的内容。

Mysql优化
1:结构优化
(1):表结构优化(表结构设计)
三范式:
原子性、唯一性、无冗余性
字段:
字段类型
设计表的时候需要选择优先级 数字》时间》字符串
字段大小
字段大小设置够用即可
Select * from mvs Procedure analyse() 查看表需要优化的字段帮助语句
表拆分:
将常用的字段和非常用的字段分成两张表
反三范式:
通过一些冗余字段,提高表的读取速度,例如订单价格,分类商品统计,粉丝数量
(2):数据库引擎
Myisam
Innodb
Memory
Memory引擎是将数据存储在内存中,mysql重启数据丢失。
Innodb 和 myisam区别
事务:innodb 支持 myisam 不支持
查询速度:myisam较快,innodb相对较慢
全文索引:myisam支持 innodb不支持
锁机制:myisam支持表锁,innodb支持行级锁
文件存储形式:myisan三个文件(.myi,myd,.frm) innodb两个文件(.frm.ibd)
查询比较多:myisam 需要事务innodb
Mysql锁
锁分类和特点
读锁
读锁不会影响其他用户对该表的读操作,但是会阻塞用户对表的写操作
写锁
写锁会阻塞其他用户对表的读操作和写操作
操作过程
1:查看当前表的争用情况show status like tablename
Mysql索引
索引是一种单独的,物理的对数据库表中一列或多列的值进行排序的一种存储结构,类似于图书的目录
索引的作用
完成非常的高效率的搜索,指数级别的提升搜索速度
索引的原理
二叉树结构 中间对半
因为是二叉结构,遇到数据时先对半,在去找
在这里插入图片描述

索引的分类
1:主键索引
2:唯一索引(身份证号,手机号,字段不能重复)
3:一般索引
4:全文索引(针对英文)
慢查询,定位执行较慢的查询语句
在这里插入图片描述

启动MySQL服务并设置参数
Show_query_log 是否启动慢查询
Show_query_log_file慢查询日志文件存放位置
Long_query_time 慢查询的时间界限
可以借助mysql内置命令来看日志
Mysqldumpslow /tmp/slow-query.log 将慢查询分组
在这里插入图片描述

分析语句
explain是mysql中的一个指令,可以用来分析sql语句的执行计划,检测有没有使用到索引
Explain select * from aa;

Select_type 搜索的类型
Table 搜索的表名
Type 搜索的类型
Possible_keys 可能用到的索引
Key 实际用到的索引
Key_len 索引的长度
Ref 关联的字段
Rows 扫描的行数
Extra 额外的信息
Type搜索类型
性能由高到低
Null > system > const > eq_ref > ref > range > index > all
Null 不使用索引,直接可以获得结果(针对myisam)
System 表中满足条件的记录最多一条
Const 表中满足条件的记录最多一条,通常会出现在主键和unique索引中
Eq_ref 表中某一列的值关联另一个表主键列的值,通常出现在联表查询中
Ref 通过普通索引查询
Range 索引范围查询
Index 索引扫描
All 全表扫描(尽量优化)
explain(执行计划)包含的信息十分的丰富,着重关注以下几个字段信息。
①id,select子句或表执行顺序,id相同,从上到下执行,id不同,id值越大,执行优先级越高。
②type,type主要取值及其表示sql的好坏程度(由好到差排序):system>const>eq_ref>ref>range>index>ALL。保证range,最好到ref。
③key,实际被使用的索引列。
④ref,关联的字段,常量等值查询,显示为const,如果为连接查询,显示关联的字段。⑤Extra,额外信息,使用优先级Using index>Using filesort(九死一生)>Using temporary(十死无生)。
着重关注上述五个字段信息,对日常生产过程中调优十分有用。
2:语句优化
1:不要使用select*
2:尽量在where字段上添加搜索引,where条件不参加计算
3:模糊查询中%前置不能使用索引,例如 like‘%12’
4:使用or语句要注意,两侧的语句都有索引才会使用索引
在这里插入图片描述
5:分组优化 对于分组的数据mysql会自动对数据进行排序,所以可以强制其不排序,提高速度
在这里插入图片描述

6:分页优化
在这里插入图片描述

3:表拆分优化
将数据表数据进行拆分,拆分主要分为两种
水平拆分
垂直拆分
水平拆分:
在这里插入图片描述

纵向拆分
在这里插入图片描述

4:主从复制
当一台服务器负载到一定程度之后,需要添加额外的mysql服务器来提供服务,主从复制是启动两台mysql服务器,一条负责读取数据,另一台负责更新,数据,而两台mysql的数据始终保持同步
在这里插入图片描述

5:中文分词
什么是中文分词
中文分词 指的是将一个汉字序列切分成一个个单独的词
例如: 我来到北京清华大学=》 我/来到/北京/清华大学
中文分词的作用
中文分词可以提高对大段文本的检索
中文分词的使用
1:安装php扩展包
2:在代码中使用
在这里插入图片描述

3:将拆分出来的词单独存一张表,检索时,通过关键词检索出来,在关联对应的另一张表的数据
在这里插入图片描述
在这里插入图片描述

6:其他技巧
1:插入数据时,不能循环插入
组织好数据一次性插入
在这里插入图片描述

2:不要将图片存入数据库,用路径代替
3:伪删除,不真实的删除数据,添加一个字段来标识
4:analyze table 优化语句的执行计划,提高查询效率
5:定期执行optimize table 整理碎片
6:尽量避免使用null会增加额外的字节标注,可以使用默认值
7:缓存

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值