小蚂蚁学习mysql性能优化(1)--SQL以及索引优化

性能优化之mysql优化

可以从几个方面进行优化

硬件    系统配置    数据库表结构    SQL索引

成本从高到底,效果从低到高。

如何发现有问题的SQL?

使用mysql慢查询日志对有效率问题的sql进行监控。

show variables like ‘slow_query.log‘;

set global slow_query_log_file=‘/home/mysql/sql_log/mysql-slow.log‘;//日志存放的位置

set global log_queries_not_using_indexes=on;//是否把没有使索引的sql记录到慢查询日志中

set global long_query_time=1;//超过多少秒的查询记录到日志当中

如何分析SQL查询

演示数据库说明:

使用mysql提供的sakila数据库,可以通过以下url获取这个演示数据库

http://dev.mysql.com/doc/index-other.html

sakila数据库的表结构信息可以通过以下网站查看:

http://dev.mysql.com/doc/sakila/en/sakila-installation.html

准备工作结束。

时间: 2024-11-18 01:34:59

小蚂蚁学习mysql性能优化(1)--SQL以及索引优化的相关文章

小蚂蚁学习mysql性能优化(7)--数据库结构优化--选择合适的数据类型

关于SQL以及索引优化的部分终于学习完了,今天开始进入第二层次的学习,数据库的结构优化,第一部分,选择合适的数据类型. 数据类型的选择,重点在于合适二字. 1.    使用可以存下数据的最小的数据类型 比如,一个时间类型的一个数据,可以使用varchar,可以使用datetime,还可以使用int,如何选择,就看哪一种类型对我们来说是最小的,不言而喻,int类型相对来说是最小的数据类型. 2.    使用简单的数据类型. int类型要比varchar类型在mysql处理上简单的多,用int类型来

小蚂蚁学习mysql性能优化(完结)--硬件方面优化--CPU和DISK优化

数据库硬件方面优化 如何选择CPU? 是选择单核更快的CPU还是选择核数更多CPU? mysql有一些工作只能使用单核CPU mysql对CPU核数的支持并不是越多越快 建议:mysql5.5使用的服务器不要超过32核.还是建议单核频率更快的cpu. Disk IO优化 常用RAID级别简介 RAID0:也成为条带,就是把多个磁盘链接成一个硬盘使用,这个级别IO最好. RAID1:也成为镜像,要求至少有两个磁盘,每组磁盘存储的数据相同. RAID0+1:就是RAID1和RAID0的结合.同时具备

小蚂蚁学习mysql性能优化(3)--SQL以及索引优化--慢查日志分析工具和explain说明

昨天在测试操作数据库的时候碰到两个问题忘了记录下来,今天补充上去,接上篇 1. 安装测试数据库sakila时报错.Mysql server has gone away的问题.解决方法: 查看    show global variables like 'max_allowed_packet'; 一般来说会显示    max_allowed_packet    1048576 修改为    set global max_allowed_packet    =    1024*1024*16;   

小蚂蚁学习mysql性能优化(4)--SQL以及索引优化--具体一些优化方法

max()的优化 例如:explain select max(`payment_date`)  from payment; 可以查看到row的行数非常的多,也就是说扫描了整张表. 为payment_date加上一个索引. create index idx_payment on payment (`payment_date`); 执行sql语句    explain select max(`payment_date`) from payment order by payment_date; 可以看

小蚂蚁学习PHP性能优化(1)

因为sphinx还没有找到比较合适的材料,今天开始学习一下PHP性能优化.记得很久之前做过这么一个功能,就是计算一级人脉下的所有推荐人的资金和,以及每个推荐人的推荐人的资金和,就形成了一个人脉树,当时的做法就是用了递归的方法来计算,其中不停的查询数据库,资源消耗相当的大,当一个人下面的直接推荐人和间接推荐人达到一二百个的时候,那就无法运行下去,这确实让人头疼了很久.今天开始学习一下高手讲解的PHP就很有必要. PHP的性能问题的解决方法 PHP语言级的性能优化 PHP周边问题的性能优化 PHP语

MySQL 性能调优——SQL 查询优化

如何设计最优的数据库表结构,如何建立最好的索引,以及如何扩展数据库的查询,这些对于高性能来说都是必不可少的.但是只有这些还不够,要获得良好的数据库性能,我们还要设计合理的数据库查询,如果查询设计的很糟糕,即使增加再多的只读从库,表结构设计的再合理,索引再合适,只要查询不能使用到这些东西,也无法实现高性能的查询.所以说查询优化,索引优化,库表结构优化需要齐头并进. 在进行库表结构设计时,我们要考虑到以后的查询要如何的使用这些表,同样,编写 SQL 语句的时候也要考虑到如何使用到目前已经存在的索引,

SQL Server 索引优化-----数据库引擎优化顾问

本文将根据“数据库引擎优化顾问”(DTA)来发现无用或缺失的索引. 要使用“数据库引擎优化顾问”,首先需要对数据库负载进行监控,为数据库负载分析准备数据.从SSMS的工具中,打开SQL Server Profile,输入安全连接方式.在常规的标签下,模板选择“Standard(默认值)”,事件选择标签下,选择事件Stored Procedures→RPC:Completed:TSQL→SQL:BatchCompleted,SQL:BatchStarting,点击运行.如下图所示: 监控一段时间后

sql查询优化 索引优化

sql语句优化 性能不理想的系统中除了一部分是因为应用程序的负载确实超过了服务器的实际处理能力外,更多的是因为系统存在大量的SQL语句需要优化. 为了获得稳定的执行性能,SQL语句越简单越好.对复杂的SQL语句,要设法对之进行简化. 常见的简化规则如下: 1)不要有超过5个以上的表连接(JOIN)2)考虑使用临时表或表变量存放中间结果.3)少用子查询4)视图嵌套不要过深,一般视图嵌套不要超过2个为宜. 连接的表越多,其编译的时间和连接的开销也越大,性能越不好控制. 最好是把连接拆开成较小的几个部

SQL Server 索引优化——无用索引

我们知道,合理的索引能大幅提升性能,但冗余的索引也会降低数据库性能.随着我们业务的发展,数据库的中的表.表结构.查询的内容都有可能发生变化.这样,有的索引就可能不再使用了,需要删除(因为维护索引即浪费存储,又耗费性能):而有的表则需要修改或者增加索引.本文主要给出快速确定不再使用的索引的查找方式之一,动态视图(DMV)查询. 无用索引首先我们来看一下如何查询无用的索引.sys.dm_db_index_usage_stats 记录自上次重启或数据库离线或重置统计信息后使用到的索引,sys.inde