博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Mysql数据库性能优化
阅读量:5950 次
发布时间:2019-06-19

本文共 1393 字,大约阅读时间需要 4 分钟。

hot3.png

Mysql数据库性能优化,可以从下面三点入手:

数据库设计

SQL语句优化

架构优化

一.数据库设计优化

1.适度的违反范式,适度    遵循三大范式就会带来查询时经常需要join,导致查询效率降低 基于性能要求结合业务,适度的做冗余

2.适度的建立索引    

IO(更新操作速度会降低,索引的操作),存储空间    

建立索引的规则:      

  a.索引的字段必须是经常用来作为查询条件的字段      

  b.所以是多个字段的情况,第一个字段要是经常作为查询条件的

  c.索引的字段必须有足够的区分度

3.对表进行水平划分      

  每年都有10万条数据,将这个表按照年区分建立表 log  log_2016 log_2015

4.对表进行垂直划分      

  字段很长,占用空间较大 检索表的时候就需要进行大量的I/O 将字段独立出一张表跟原表建立1对1的关系

5.选择适当的字段类型

6.文件图片等大文件用硬盘存储,挂载存储,不用数据库,数据库中只存储文件路径

7.外键要表示清楚  实际工作中大部分不会建立外键

8.宁可集中批量操作也不要频繁读写

9.选择合适的引擎

二.SQL优化

1.慢日志,explain

2.避免全表扫描, 考虑在where和order by 的列建立索引

3.尽量避免在where子句中使用null值判断。Where username is null 放弃使用索引进行全表扫描,设计默认值 例如:0

4.尽量避免在where子句中使用!=||<>,放弃索引,走全表扫描 可以使用< ,<=, =, > ,>= ,between ,in会走扫描

5.尽量避免在where字句中使用 or 来连接,放弃扫描 走全表扫描,可以使用union all  

6.能用between 实现就不要使用in

7.Like避免使用 %%查询 不会走索引。Abc%会走索引

8.查询的时候尽量不要使用*作为结果列,仅列出需要查询的字段,节省应用服务器的内存

9.在where中,尽量避免做列运算,尽量避免使用函数,不走索引,走全表扫面

10.Join操作 小的结果驱动大的结果

11.分页在基数比较大时,不要用limit 尽量换成 between

12.不要使用rand获取随机条数记录

13.不要使用count(列名)表示多少个不为空 记录 使用count(*,1)整个结果集有多少条记录

14.不要做无谓的排序操作

15.出现了局部变量时,可以强制使用索引 with(index(索引名))

16.尽量避免对字段使用表达式操作 selet 1 from table where num/2=100   num=100*2

17.用exists 代替 in

18.索引并不是越多越好,做好不要超过6个

19.尽量使用数字型字段

20.尽量避免创建临时表

21.尽量避免使用游标,游标操作超过1万条记录 必须考虑改写

22.尽量避免大事务操作,索引优化

三.架构优化

1.数据库参数配置 ,具体更多的优化配置      innodb_buffer_pool_size=5g key_buffer_size

2.合理的硬件资源和操作系统    大部分64位的操作系统 和 64位mysql数据库

3.读写分离    通过mysql的复制机制实现多台机器同步,将数据库的压力分散

233504_AAlD_867113.png

转载于:https://my.oschina.net/bigdataer/blog/894147

你可能感兴趣的文章
修改数据库的兼容级别
查看>>
Windows下同时安装两个版本Jdk
查看>>
uoj#228. 基础数据结构练习题(线段树)
查看>>
JS键盘事件监听
查看>>
ios开发周期之--(向上,向下,四舍五入)取整
查看>>
加油!
查看>>
拦截导弹问题(动态规划)
查看>>
iOS 单元测试(Unit Test 和 UI Test)
查看>>
[linux小技巧]
查看>>
文件下载_中文乱码:"Content-disposition","attachment; filename=中文名
查看>>
HBase 笔记3
查看>>
2017.11.23 display fun --STM8
查看>>
深入学习jQuery选择器系列第八篇——过滤选择器之伪子元素选择器
查看>>
一个关于log4j的悲伤的故事
查看>>
PCA
查看>>
ajax上传文件
查看>>
java中通过绝对路径将图片存入数据库
查看>>
简要记录浮点型数据的二进制存储格式
查看>>
ConcurrentHashMap(Java8)源码分析
查看>>
Python文件处理之文件指针(四)
查看>>