变相怪杰 发表于 2015-1-16 20:12:32

MYSQL教程之MySQL功能优化实战

MySQL的支持者们却认为,MySQL所保留的功能都是精华,并且是你部署、MySQL学习教程配置和维护这个数据库所必不可少的一些功能。过年这段工夫因为线上数据库常常压力过年夜招致呼应十分迟缓乃至逝世机,咬咬牙下年夜决计来办理效力不高的成绩!
起首是因为公司承袭疾速开辟准绳,频仍上线,招致每次无视了功能成绩!积少成多,以是招致体系愈来愈慢,以是假如你的体系查询语句原本就优化的很好了大概参考意义不年夜!
提取慢查询日记文件,应当在你的DataDir目次上面
经由过程程序处置慢查询文件,将文件格局的慢查询导进到数据库中:
1MySQL>descslow_query;2+---------------+-------------+------+-----+---------+-------+3|Field|Type|Null|Key|Default|Extra|4+---------------+-------------+------+-----+---------+-------+5|Date|varchar(32)|NO||||查询产生的工夫6|user|varchar(64)|NO||||7|host|varchar(64)|NO||||8|content|text|NO||||将Statement举行Mask后的语句,
便于GroupBy9|query_time|int(11)|NO||||查询所用工夫,间接功能目标10|lock_time|int(11)|YES||0||守候锁定的工夫11|rows_sent|int(11)|YES||0||前往的了局行数12|rows_examined|int(11)|YES||0||扫描行数13|statement|text|YES||NULL||实践查询语句14+---------------+-------------+------+-----+---------+-------+然后发扬您的设想力在这个表中全力捕获你想捕获的,那范例语句压力最年夜、扫描行数最多、等锁最久……
好比:
优化后:
mysql>selectsum(query_time)/count(*),count(*),sum(query_time),min(Date),Max(Date)fromslowwhereDate>2008-02-2022:50:52
andDate<2008-02-2117:34:35;+--------------------------+----------+-----------------+---------------------+---------------------+|sum(query_time)/count(*)|count(*)|sum(query_time)|min(Date)|Max(Date)|+--------------------------+----------+-----------------+---------------------+---------------------+|5.7233|2197|12574|2008-02-2022:51:16|2008-02-2117:34:10|+--------------------------+----------+-----------------+---------------------+---------------------+1rowinset(0.09sec)优化前:
mysql>selectsum(query_time)/count(*),count(*),sum(query_time),min(Date),Max(Date)fromslow
whereDate>2008-02-1722:50:52andDate<2008-02-1817:34:35;+--------------------------+----------+-----------------+---------------------+---------------------+|sum(query_time)/count(*)|count(*)|sum(query_time)|min(Date)|Max(Date)|+--------------------------+----------+-----------------+---------------------+---------------------+|2.5983|16091|41810|2008-02-1722:50:58|2008-02-1817:34:34|+--------------------------+----------+-----------------+---------------------+---------------------+1rowinset(0.15sec)再好比,优化前:
基础信息:
慢查询统计从2008-02-1717:59:34到2008-02-1822:45:22工夫段,靠近29个小时的数据;
统共有慢查询28914个,均匀一小时有1000个慢查询;(花了一天优化降到每小时100个的模样了,成绩感啊)
一切慢查询泯灭总工夫75690秒;
慢查询工夫设置是年夜于2秒
参数申明:
sum--总实行工夫(秒);
count--实行次数;
avg--均匀实行工夫(秒);
content--相似SQL语句的表达通式,个中DD代表数字;
statement--某一条详细实行的SQL语句
因为会见时的锁,招致update十分慢:
1mysql>selectcount(*)asn,sum(query_time)ass,sum(query_time)/count(*)asavg,
substring_index(statement,,2)
asufromslowwherestatementlikeupdate%andquery_time>14groupbyu;2+-----+------+---------+--------------------------+3|n|s|avg|u|4+-----+------+---------+--------------------------+5|7|112|16.0000|updateconversation|6|151|2413|15.9801|updateuser|7|4|65|16.2500|updateuser_modification|8+-----+------+---------+--------------------------+申明程序中仍是存在一些健忘开释事件锁的情形
最泯灭资本的10个查询:
个中第1,2,5应当是统一类查询,如许的话这一类查询占总查询的一半以上,每分钟呈现10个以上如许的慢查询,必要重点办理!
1mysql>selectsum(query_time)assum,count(*)ascount,sum(query_time)/count(*)
asavg,statementfromslowwher2ehostlike%69.12.23.%groupbycontentorderbysumdesclimit0,10G3***************************1.row***************************4sum:273265count:116816avg:2.33947…………这一切听起来不错,无疑DBaaS具有很多相对于RDBMS的优势。然而MySQL学习教程,DBaaS也有其局限性,云服务中固有的局限性就是之一。当客户开始将数据放入云端时,他们会遭遇到无法控制的网络性能问题。

再见西城 发表于 2015-1-18 17:08:39

数据库物理框架没有变动undo和redo都放在数据库得transaction中,个人感觉是个败笔。如果说我们在设计数据库的时候考虑分多个数据库,可能能在一定程度上避免I/O效率问题。

飘飘悠悠 发表于 2015-1-22 16:43:11

我是新手,正在学习数据库和操作系统,深感理论的泛广,唯有一步一步来,但是又感觉时间不够,收集了很多资料却总是没能认真的看完,希望有一个讨论板块,大家共同解决,共同分享,共同努力

小妖女 发表于 2015-1-31 08:17:53

如果是将来做数据库的开发设计,就应该详细学习T-SQL的各种细节,包括T-SQL的程序设计、存储过程、触发器以及具体使用某个开发语言来访问数据库。

谁可相欹 发表于 2015-2-6 18:56:30

Mirror可以算是SQLServer的Dataguard了。但是能不能被大伙用起来就不知道了。

愤怒的大鸟 发表于 2015-2-18 08:02:32

总感觉自己还是不会SQL

柔情似水 发表于 2015-3-6 02:34:22

XML字段类型更好的解决了XML数据的操作。XQuery确实不错,但是个人对其没好感。(CSDN的开发者应该是相当的熟了!)

冷月葬花魂 发表于 2015-3-12 19:06:16

理解了存储结构,再阅读下性能优化的章节基本上会对sqlserver有个清晰地认识

再现理想 发表于 2015-3-20 02:04:58

XML字段类型更好的解决了XML数据的操作。XQuery确实不错,但是个人对其没好感。(CSDN的开发者应该是相当的熟了!)
页: [1]
查看完整版本: MYSQL教程之MySQL功能优化实战