网站大量收购闲置独家精品文档,联系QQ:2885784924

[mysql性能优化点记录.docxVIP

  1. 1、本文档共7页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
[mysql性能优化点记录

第一章myisam,可以基于blob和text的前500字节,创建索引myisam 支持fulltext延迟更新索引(delay_key_write)CREATE TABLE `table3` ( `id` INT(11) NOT NULL AUTO_INCREMENT, `name` VARCHAR(30) DEFAULT NULL, `id2` INT(11) DEFAULT NULL, PRIMARY KEY (`id`)) ENGINE=MYISAM DEFAULT CHARSET=utf8 DELAY_KEY_WRITE = 1ALTER TABLE table2 DELAY_KEY_WRITE = 1只有myisam支持全文检索第三章 索引方面 字段尽可能的小 尽量避免null,用0代替。但是对性能的提升很小,最后考虑,索引的列最好不适用null mysql性能优化点记录一、优化数据访问查询性能低下的最基本原因就是访问了太多数据。一些查询不可避免的要筛选大量的数据,单这并不常见。大部分性能欠佳的查询都可以用减少数据访问的方式进行修改。在分析性能欠佳的查询的时候,下面两个步骤比较有用:1.应用程序是否在获取超过需要的数据。这通常是访问了过多的行或列。2.mysql服务器是否分析了超过需要的行。对于访问的数据行很大,而生成的结果中数据行很少,可以尝试修改。 1.使用覆盖索引,它存储了数据,所以存储引擎不会去完整的行。2.更改架构,一个例子就是使用汇总表。3.重写复杂的查询,让mysql的优化器可以优化的执行。 二、复杂查询和多个查询1.把一个复杂的查询分解为多个简单的查询。(mysql一般的服务器,每秒钟可以处理50 000个查询)2.三、缩短查询将一次处理大量数据的操作,分解为多个小操作。循环的方式每次处理一部分数据。一次删除不要超过10 000行(delete)四、分解链接把一个多表连接分解成多个单个查询,然后在应用程序里实现联接。这样的优势1.缓存效率高。2.mysql,可以更有效的利用表锁,查询会锁住单个表较短时间。3.应用程序进行联接可以更方便的拓展数据库,把不同表放在不同服务器上。4.查询更高效。5.可以减少多余的行访问,可以减少网络流量和内存消耗。 小结:在程序端进行联接的效率更高 1.可以缓存早期查询的大量数据。 2.使用了多个myisam表 3.数据分布在不同的服务器上。 4.对于大表使用in替换联接 5.一个连接引用了同一个表多次。 当你重建汇总和缓存表的时候,在操作的时候你常常需要它们的数据保持可见。你可以使用“shadow table”(影像表)来实现。当你已经创建它之后,你可以使用原子性的重命名来交换这些表。举个例子,如果你需要重建my_summary,你能创建my_summary_new,填充数据,把它和真正的表作交换。mysql DROP TABLE IF EXISTS my_summary_new, my_summary_old;mysql CREATE TABLE my_summary_new LIKE my_summary;-- populate my_summary_new as desiredmysql RENAME TABLE my_summary TO my_summary_old, my_summary_new TO my_summary; mysql执行查询的一般性过程 1.客户端发送查询到服务器 2.服务器检查查询缓存, 3.服务器解析,预处理和优化查询,生成执行计划。 4.执行引擎调用存储引擎api执行查询。 5.服务器将结果发送到客户端。 mysql客户端、服务器协议 1.协议是半双工的。mysql服务器在某个时间可以发送或者接受数据,单不能同时发送和接收。所有没有办法阶段消息。 2.客户端用一个数据包将查询发送到服务器,所以max_packet_size这个配置参数对于大查询很重要的原因。 3.客户端从服务器提取数据的时候是服务器产生数据的同时把它们“推”到客户端的,客户端只需要接收推出来的数据,无法告诉服务器停止发送数据。 查询缓存 SELECT SQL_NO_CACHE * FROM ol_answerlog LIMIT 1000 SHOW STATUS LIKE last_query_cost 关键字straight_join 强制执行引擎按照查询中表现的顺序来进行链接操作。严格的说,mysql不回尝试减少读取的行数,它只会试着优化对页面的读取,但是行数可以大致显示查询的开销。 连接优化器试着产生最低开销的查询计划。在可能的时候,他会从单表计划开始,检查所有的可能的子树的组合。但是对n个表连接,需要检查组合的数量就是n的阶乘,这个数量称为

文档评论(0)

xiayutian80 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档