内容简介:伴随着应用的频繁使用,软件也变得越来越慢,可能是内存的问题,可能是软件设计的问题的,但是你有没有想过,你天天操作的数据库也会拖累你的应用程序呢?下面就教你十招,搞定数据库性能,让你的应用飞起来。让小编带你来一一见识它们的独特之处。
伴随着应用的频繁使用,软件也变得越来越慢,可能是内存的问题,可能是软件设计的问题的,但是你有没有想过,你天天操作的数据库也会拖累你的应用程序呢?
下面就教你十招,搞定数据库性能,让你的应用飞起来。让小编带你来一一见识它们的独特之处。
杀手锏1: 设置一定时间后优化重建数据库
MySQL check –o –all –database 会让ibdata1不断的增大,因此真正的优化只能是重建数据库表结构。
杀手锏2 :减少磁盘写入的操作
- 准备足够大的写入缓存 innodb_log_file_size,这个语句和写磁盘操作有密切的联系
- 避免双写入缓冲
杀手锏3 :提高磁盘读写效率
RAID0 在使用名为EC2虚拟磁盘时,使用RAIDO 可以极大的提高磁盘的读写效率
杀手锏4 :多使用UNION INDEX 来代替UNION
我们知道使用索引能够有效的减少数据库中的数据量来提高查询效率,因为索引可以直接寻找目标对象,不需要全部检索一遍数据库的。
举个例子吧:数据库索引 就如同在图书管理寻找你所要找的图书,查询系统之后我们能够知道那本本在哪个区域,在那个货架,那样就可以快速的找到我们所想要的图书。不需要在偌大的图书馆里一本一本的寻找,数据库索引就是这样相同的道理。
索引代码:
使用索引在数据库中查询用户的 账号和密码:
杀手锏5 :将数据库保存在内存磁盘中
随着硬盘技术的提高,很多人都会将数据库存放在固态磁盘(SSD)中,尽管当前的固态磁盘比移动硬盘快的多,但是它仍然不能与电脑的内存(RAM)相比,毕竟数据从系统内存中读取要比其他一切存储都要快,建议使用内存磁盘。
随着现在电脑设备技术的前进,你不在需要将所有的数据库都存入内存中,就可以获取内存中大部分性能优势,你只需要将经常使用到的数据存入内存中即可。
在上面的图表中,您可以看到高达每秒2,000个I/O操作,可以看出来将频繁使用的数据存入到内存中很适合。
杀手锏6:充分利用日志查询
将所有的查询记录,使用ORM系统或者生成查询语句系统比较有效。
切记,请不要在生成环境使用,不然你的磁盘空间会被占满的。
执行1s的查询:
杀手锏7:用NOSQL的方式来使用MySQL
使用HnadleSocket跳过MySQL的 SQL 解析层,使得MySQL 变为真正的NLSQL.
杀手锏8:使用JOIN (连接)来替代子查询
MySQL 4.1 之后开始支持子查询,即可以使用select 来创建一个单列的查询结果,然后将这个查询结果作为条件在另一个查询中使用。举个例子:我们现在需要在系统中,将没有任何订单的客户从系统中删除,此时我们可以使用子查询,先从销售单 表中将所有有订单的客户ID取出,然后将ID 传递给主查询。
接下里我们找出没有订单的客户ID,进一步优化。
我们知道使用子查询可以一次性就完成,原本需要很多步骤才能够完成的SQL操作,同时还可以避免表锁死,同时操作简单。
含有join的连接来代替子连接,查询速度会变得更快,原因是:MySQL不需要在内存中再创建临时表来完成这个主查询和子查询这两个步骤,自然而然使用JOIN 连接就变得很快了。
杀手锏9:尽量使用”=”而不用”> ”或者”<”
“=” 扩大了索引的范围
杀手锏10:不要总是使用 “SELECT *”
在正常情况下,使用索引是可以提高查询速度的。但是当SQL语句使用累赘时,索引将无法发挥它应有的作用。
很显然,虽然下面两个查询返回的结果都是一样的,但是后者的效率要高很多。
下面的语句:
结论:
MySQL的性能优化可能方法很多,但是我例举出来的这10个方法是经常使用到的。如果你有更好的方法,请告诉我。
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- [译] HPACK:http2中沉默的杀手锏
- 为了控制 Bean 的加载我使出了这些杀手锏
- 腾讯十年运维老兵:运维团队的五个“杀手锏”
- 提高网络灵活性和效率的杀手锏—SD-WAN
- Go 结构体标签表达式 v1.0 发布,成参数校验杀手锏
- Go 结构体标签表达式 v1.0 发布,成参数校验杀手锏
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
UNIX 时间戳转换
UNIX 时间戳转换
RGB CMYK 转换工具
RGB CMYK 互转工具