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

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

hot3.png

在现在的后台开发中,磁盘往往成为了运行瓶颈,而对于大部分应用而言,数据库就是最大的瓶颈。下面列一些mysql的优化点。

  1. 使用ORM,使用ORM不仅仅防止SQL注入,提供操作便利,方便数据库切换等;同时大部分程序员也不会比ORM里面写的SQL语句更好。
  2. 为经常用来做搜索的字段建立索引,但不要为太多字段建立索引,因为插入,删除,甚至update索引字段都会导致对索引的操作,这时会影响数据库的操作速度。
  3. 在表的数据量不是太庞大,单个字段长度变化不大的情况下,使用CHAR代替VARCHAR;如果一个表的所有字段都是定长时,那么每一行也都是固定长度,对比不定长表这会对数据的操作提供很大的加速。
  4. 在确定数据范围或者需求时,采用尽量小的数据类型进行存储;比如学生的考试成绩你可以考虑使用TINYINT,

    SMALLINT来代替INT,使用DATE代替DATETIME

    TINYINT, SMALLINT, MEDIUMINT, INT, BIGINT在mysql中分别占用1,2,3,4,8个字节
  5. 如果一个频繁使用的查询需要join几个表,就可以考虑将部分字段进行冗余存储,因为join表的消耗实在是太大了。

  6. 妥善配置mysqld参数,会很大程度影响你的mysql查询效率。参考windows版的my.ini或者官网吧

  7. 查询时指定查询的列,尽量不要使用select *,对于表列数较大时尤其重要,时时刻刻把减少磁盘IO记在心中

  8. 如果只是判断存在与否,使用select 1 where语法 要多少行取多少行,多使用limit

  9. 少写一些复杂的存储过程,记住我们的瓶颈多在数据库;另外不能应对数据库切换。

  10. 对于特别大数据量的表,使用分区存储。参考:

  11. 使用数据库集群,其实部分原理跟分区存储是相似的。

对于mongodb的优化也是类似的方法,比如建立索引,在确定数据规格的情况下考虑使用 capped collection等.

转载于:https://my.oschina.net/caoxinyu0205/blog/741838

你可能感兴趣的文章
Nginx Beginner's Guide
查看>>
ES6语法总结
查看>>
数组实例
查看>>
window.open 打开新窗口被拦截的解决方案
查看>>
如何删除Git仓库中冗余的tag?
查看>>
October CMS - 快速入门 5 创建插件
查看>>
SpringMVC之源码分析--LocaleResolver(三)
查看>>
Vue 中 proxy代理
查看>>
Node.js教程第一篇—— Node.js 基础
查看>>
初识react高阶组件
查看>>
深入理解Java虚拟机到底是什么
查看>>
Python 基础
查看>>
GitHub CEO:GitHub 十年,感谢有你
查看>>
php与ethereum客户端交互
查看>>
JavaFx系列教程之一:JavaFx+Springboot+Maven 开发打包教程
查看>>
67 个拯救前端开发者的工具、库和资源
查看>>
leetcode median of two sorted arrays C语言实现
查看>>
iOS微信内存监控
查看>>
解决vue开发环境跨域问题
查看>>
Flutter 初尝:从 Java 无缝过渡
查看>>