作家
登录

提高MySQL性能的7个技巧

作者: 来源: 2017-11-06 14:22:01 阅读 我要评论

  •       “rows_produced_per_join”: 1874, 
  •       “filtered”: “100.00”, 
  •       “cost_info”: { 
  •         “read_cost”: “387.60”, 
  •         “eval_cost”: “374.80”, 
  •         “prefix_cost”: “762.40”, 
  •         “data_read_per_join”: “351K” 
  •       }, 
  •       “used_columns”: [ 
  •         “id”, 
  •         “k” 
  •       ], 
  •       “attached_condition”: “(`sbtest`.`sbtest1`.`id` between 1000 and 2000)” 
  •     } 
  •   } 
  • 应当查看的一个组件是“query cost”。query cost是指MySQL根据萌芽履行的总开销来推敲这个特定萌芽的价值,并且基于很多不合的身分。

    简单萌芽的萌芽开销平日小于1,000〖?销在1,000到100,000之间的萌芽被认为是中等开销的萌芽,并且如不雅每秒只运行数百个如许的萌芽(而不是数万个),平日会比较快。

    开销跨越100,000的萌芽可以算作是昂贵的。平日,当您是体系上的单个用户时,这些萌芽仍会快速运行,但您应当细心推敲在交互式应用法度榜样中应用词攀类萌芽的频率(尤其是跟着用户数量的增长)。

    当然,这些数字只是机能的一个大年夜概的表现,但它们展示了一般原则。您的体系可能更好地处理萌芽工作负载,也可能更糟,这取决于其体系构造和设备。

    决定萌芽开销的重要身分是萌芽是否精确应用索引。EXPLAIN 敕令可以告诉您萌芽是否应用索引(平日是因为索引是如安在数据库中创建的,或者萌芽本身是若何设计的)。这就是为什么学会应用EXPLAIN是如斯重要。

    优化技能 #2:创建精确的索引

    索引经由过程削减萌芽必须扫描的数据库中的数据量来进步萌芽效力。MySQL中的索引用于加快数据库中的拜访,并赞助履行数据库束缚(如 UNIQUE和FOREIGN KEY )。

    数据库索引很像图书索引。它们被保存在本身的地位,并且包含主数据库中已经存在的信息。它们是指向数据地点地位的参考办法或映射。索引不会更改数据库中的任何数据。它们只是指向数据的地位。

    没有完全实用于任何工作负载的索引。而应当始终在体系运行的萌芽高低文中查看索引。

    索引优胜的数据库不仅运行得更快,并且即使缺乏一个索引也会使数据库慢如蜗牛。应用EXPLAIN(如前所述)查找缺氨赡索引并添加它们。然则要当心:不要添加你不须要的索引!不须要的索引会降低数据库的速度

    优化技能 #3:拒绝应用默认设置

    与任何软件一样,MySQL有很多可设备的设置,可用于修改行动(以及最终的机能)。与任何软件一样,治理员忽视了很多这些可设备的设置,最终在默认模式下应用。

    innodb_ buffer_ pool_size:缓冲池用于存放缓存数据和索引。这是运器具有安闲量RAM的体系作为数据库办事器的重要原因。如不雅只运行InnoDB存储引擎,平日会将80%的内存分派给缓冲池。如不雅您正在运行异常复杂的萌芽,或者有大年夜量的并发数据库连接,或大年夜量的表,可能须要将此值降低一个档次,以便为其他操作分派更多的内存。

    在设置InnoDB缓冲池大年夜小时,须要确保不要设置得太大年夜,不然会导致交换。这绝对会影响数据库机能。一种简单的检查办法是查看 Percona Monitoring and Management 中的体系概述图中的交换晃荡:

    下面是三个MySQL机能优化设置,您应当始终细心检查:

    进步MySQL机能的7个技能

    如图所示,有时进行一些交换是可以的。然则,如不雅看到持续每秒1MB或更多的交换晃荡,则须要削减缓冲池大年夜小(或其他内存应用)。

    优化技能 #1:进修若何应用 EXPLAIN

    如不雅在第一次拜访时没有精确地获得innodb_ Buffer_ pool_ size的值,不消担心。大年夜MySQL5.7开端,便可以动态更改InnoDB缓冲池的大年夜小,而无需从新启动数据库办事器。

    innodb_ log_ file_ size:这是单个InnoDB日记文件的大年夜小。默认情况下,InnoDB应用两个值,如许您就可以将这个数字加倍,大年夜而获得InnoDB用于确保事务持久的轮回重做日记空间的大年夜小。这也优化了将更改应用到数据库。设置innodb_ log_ file_ size是一个衡量的问题。分派的重做空间越大年夜,对于写密集型工作负载而言,机能就越好,然则如不雅体系断电或出现其他问题,崩溃恢复的时光就越长。


      推荐阅读

      升级要抓紧 Windows 10免费升级将于近期结束

    日前, 微软停止面向通俗用户的 Windows 10 免费进级已经有一年多了,颇┞冯对应用“帮助技巧”的 Windows 10 免费进级办事也将于近期停止。如不雅你还想应用微软官方供给的,>>>详细阅读


    本文标题:提高MySQL性能的7个技巧

    地址:http://www.17bianji.com/lsqh/38493.html

    关键词: 探索发现

    乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

    网友点评
    自媒体专栏

    评论

    热度

    精彩导读
    栏目ID=71的表不存在(操作类型=0)