数据库的优化从哪几个方面,mysql数据库性能调优
在linux上启用MySQL慢速查询
下面的代码vim /etc/my.cnf
[mysqld]
Slow-query-log=on #打开慢速查询功能
slow _ query _ log _ file=/usr/local/MySQL/data/slow-query . log #慢速查询日志存储路径和名称
Long_query_time=5条查询时间超过5s的查询语句
log-queries-not-using-indexes=on #列出了不使用索引的查询语句。
在Windows下打开MySQL慢速查询
在MySQL Windows系统中,配置文件通常是[mysqld]下的my.ini
补充:
在my.cnf或my.ini中添加log-queries-not-using-indexes参数,以记录不带索引的查询。例如:
下面的代码是log-slow-queries=/data/MySQL data/slow query . log # slow query日志存储路径和名称
Long_query_time=5条查询时间超过5s的查询语句
Log-queries-not-using-indexes#列出不使用索引的查询语句。
使用文件排序:当您看到这种情况时,查询需要优化。MYSQL需要采取额外的步骤来找出如何对返回的行进行排序。它根据存储排序键值和匹配条件的所有行的连接类型和行指针对所有行进行排序。
当使用临时saw时,查询需要被优化。在这里,MYSQL需要创建一个临时表来存储结果,这通常是按不同的列集合的顺序进行的,而不是按GROUP BY的类型进行的:这是一个重要的列,它显示了连接所使用的类型。连接类型从最好到最差依次为const、eq_reg、ref、range、index和ALL。
对于查询操作,图1没有索引,图2有索引,查询的类型和行字段也不同。(参考上图中字段的含义)
显然,图3是空的查询方法和我们想要的结果。图4和图5是相同的。通过使用count()函数的特性,获得了我们想要的结果(图6)。
3.2子查询的优化。通常,子查询被优化成一个连接查询。但在优化时,需要注意关联构建中是否存在一对多的关系,特别要注意重复数据。
例4:获取每个用户的兴趣爱好数量。使用sql执行计划进行检查。图9使用GROUPBY查询,关联的表将生成临时表并按文件排序。sql优化后(图10),直接按索引查询,避免生成临时表和按文件排序。当数据量较大时,对服务器的IO访问会大大减少。
例LIMIT的使用通常伴随着ORDER BY(如图11所示)。如果没有索引字段,将按文件排序,全表查询将增加对服务器IO的访问。
优化方案一:使用主键进行排序不会引起全表扫描,但会减少对服务器IO的访问。然而,还有一个问题。查询的项目越多,扫描的项目就越多(如图13所示)。
优化方案二:可以获取之前主键的id做一个范围查询来减少对服务器IO的访问(如图14),但是会有另外一个问题。必须确保主键ID是连续的。当缺少主键ID时,我们找到的数据会是错误的。
优化方案三:可以添加一个字段进行限制查询,加上索引,效果会和主键id一样,但是这样会造成很多麻烦。
1.如果一个索引可以包含所有的字段,它被称为覆盖索引。当一个表中的数据较少时,可以使用覆盖索引,这样就可以读取索引而不是读取表。
2.索引字段越小越好,因为数据库中的数据是按页存储的。如果IO一次读取一页的大量数据,可以提高服务器IO的效率。
例:用count函数统计唯一值,值越大,离散度越大。也就是说u_pass的色散比大于u_name,所以要用index(u_pass,u_name)。
注意:由于业务变化,一些原来使用的索引现在需要清空,这也是索引优化的一个方面!
注意:再次强调,SQL和索引的优化对于数据库优化非常重要。如果这一层优化做得好,其他的优化也能起到一些作用;否则其他的优化就起不到什么作用了。这一层优化也是成本最低,效果最好的一层,所以最好把重点放在数据库优化这一层。
从-2 63 (-922372036854775808)到2 63-1 (922372036854775807)的整数数据(全数字)。存储大小为8字节。
从-2 ^ 31(-2,147,483,648)到2 ^ 31-1(2,147,483,647)的整数数据(所有数字)。存储大小为4字节。int的SQL-92同义词是integer。
在支持整数值的地方支持Bigint数据类型。但是,在某些特殊情况下,当整数值超出int数据类型支持的范围时,会使用bigint。
当表格中有大量数据时,可以选择水平拆分表格。水平拆分的本质是不改变表的结构,只是把原来存储在同一个表中的数据放到多个结构相同的表中。
从INFORMATION_SCHEMA中选择engine,ROUND(SUM(data _ length index _ length)/1024/2014,1)作为“总MB”。table_schema不在按引擎分组的( information_schema , performance_schema )中的表;用工具配置MySQL的配置文件更方便。主要是调整配置的参数,什么样的参数调整数值合适?不是三言两语能说清楚的,估计需要补充各种基础知识。
也就是把文本配置模式改成界面配置模式,但是这个时候经验很重要,否则根本无法判断什么样的配置合适!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。