云诺说 - 小程序定制 - 广告营销
当前位置: Mysql > mysql数据库优化的一些思路

mysql数据库优化的一些思路

2019-11-14 07:54 分类:Mysql 作者:云诺 阅读(224)

版权声明:本文为博主原创文章,如果转载请给出原文链接:http://doofuu.com/article/4156202.html

一、SQL语句优化
1、应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使用索引而进行全表扫描。
应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如:

select id from t where num is null

2、可以在num上设置默认值0,确保表中num列没有null值,然后这样查询:

select id from t where num=0

3、很多时候用 exists 代替 in 是一个好的选择。
4、用Where子句替换HAVING 子句 因为HAVING 只会在检索出所有记录之后才对结果集进行过滤。

二、索引优化
    看上文mysql索引的工作原理及B-/+Tree索引的性能分析


三、数据库结构优化
1、范式优化: 比如消除冗余(节省空间)
2、反范式优化:比如适当加冗余等(减少join)
3、拆分表:分区将数据在物理上分隔开,不同分区的数据可以制定保存在处于不同磁盘上的数据文件里。这样,当对这个表进行查询时,只需要在表分区中进行扫描,而不必进行全表扫描,明显缩短了查询时间,另外处于不同磁盘的分区也将对这个表的数据传输分散在不同的磁盘I/O,一个精心设置的分区可以将数据传输对磁盘I/O竞争均匀地分散开。对数据量大的时时表可采取此方法。可按月自动建表分区。
拆分其实又分垂直拆分和水平拆分:

案例: 简单购物系统暂设涉及如下表:
1.产品表(数据量10w,稳定)
2.订单表(数据量200w,且有增长趋势)
3.用户表 (数据量100w,且有增长趋势)
以mysql为例讲述下水平拆分和垂直拆分,mysql能容忍的数量级在百万静态数据可以到千万

垂直拆分:
解决问题:表与表之间的io竞争

不解决问题:单表中数据量增长出现的压力
方案: 把产品表和用户表放到一个server上 订单表单独放到一个server上

水平拆分:
解决问题:单表中数据量增长出现的压力
不解决问题:表与表之间的io争夺

方案:用户表 通过性别拆分为男用户表和女用户表,订单表 通过已完成和完成中拆分为已完成订单和未完成订单,产品表 未完成订单放一个server上,已完成订单表盒男用户表放一个server上,女用户表放一个server上(女的爱购物 哈哈)。

四、服务器硬件优化

服务器硬件优化不在本文的范畴内,请自行Google or 百度

 

祝生活愉快!

「创作不易,你的支持是本站持续更新最大的动力!」

赞(0) 打赏

谢谢你请我喝奶茶*^_^*

支付宝
微信
1

谢谢你请我喝奶茶*^_^*

支付宝
微信

上一篇:

下一篇:

共有 0 条评论 - mysql数据库优化的一些思路

博客简介

云诺说是一个致力于分享互联网编程技术交流、小程序开发、小程序源码分享、网络推广引流服务、推荐优质的引流渠道、广告开户、竞价推广等行业的IT技术网站,希望你能在本站得到你所需要的信息。

Q Q :2730094141

微信 :LGY17666

职业 :小程序开发、网络推广

现居 :广东省-广州市-天河区

友情链接

欢迎与本博客交换友情链接,本博客对交换链接的网站没有要求。如果您是本博客的友情链接网站,在遇到网站运行问题时,可以随时联系,我们将免费提供技术类支持! 申请交换友链

站点统计

  • 文章总数:109 篇
  • 草稿数目:0 篇
  • 分类数目:14 个
  • 独立页面:119 个
  • 评论总数:0 条
  • 访问总量: 87179次
  • 最近更新:2020年10月02日