金沙国际官网_金沙国际平台登录

因为这个金沙国际官网_金沙国际平台登录网站与很多的大型澳门赌场都有合作,金沙国际官网_金沙国际平台登录尽职尽责,高效执行,保持好奇心,不断学习,追求卓越,点击进入金沙国际官网_金沙国际平台登录马上体验吧,所以现在也正式地开始了营业。

您的位置:金沙国际官网 > 数据库 > MySQL优化指南,digest详解慢查询日志

MySQL优化指南,digest详解慢查询日志

发布时间:2019-11-04 06:05编辑:数据库浏览(60)

    转换后

    MyISAM

    MyISAM引擎是MySQL 5.1及前边版本的默许引擎,它的风味是:

    • 不扶助行锁,读取时对亟待读到的兼具表加锁,写入时则对表加排它锁

    • 不扶持工作

    • 不支持外键

    • 不扶植崩溃后的平安复苏

    • 在表有读取查询的同时,帮衬往表中插入新记录

    • 支持BLOBTEXT的前500个字符索引,帮助全文索引

    • 支撑延迟更新索引,非常的大提高写入质量

    • 对此不展销会开退换的表,辅助压缩表,非常大裁减磁盘空间占用

    四、深入分析pt-query-digest输出结果

    率先有些:总体计算结果
    Overall:总共有多少条查询
    Time range:查询试行的时限
    unique:唯豆蔻梢头查询数量,即对查询条件举办参数化未来,总共有个别许个不等的询问
    total:总计   min:最小   max:最大  avg:平均
    95%:把全体值从小到大排列,位贮存在95%的足够数,那个数平时最富有参照他事他说加以考察价值
    median:中位数,把全数值从小到大排列,位存放在中等那么些数

    图片 1

    # 该工具执行日志分析的用户时间,系统时间,物理内存占用大小,虚拟内存占用大小
    # 340ms user time, 140ms system time, 23.99M rss, 203.11M vsz
    # 工具执行时间
    # Current date: Fri Nov 25 02:37:18 2016
    # 运行分析工具的主机名
    # Hostname: localhost.localdomain
    # 被分析的文件名
    # Files: slow.log
    # 语句总数量,唯一的语句数量,QPS,并发数
    # Overall: 2 total, 2 unique, 0.01 QPS, 0.01x concurrency ________________
    # 日志记录的时间范围
    # Time range: 2016-11-22 06:06:18 to 06:11:40
    # 属性               总计      最小    最大    平均    95%  标准    中等
    # Attribute          total     min     max     avg     95%  stddev  median
    # ============     ======= ======= ======= ======= ======= ======= =======
    # 语句执行时间
    # Exec time             3s   640ms      2s      1s      2s   999ms      1s
    # 锁占用时间
    # Lock time            1ms       0     1ms   723us     1ms     1ms   723us
    # 发送到客户端的行数
    # Rows sent              5       1       4    2.50       4    2.12    2.50
    # select语句扫描行数
    # Rows examine     186.17k       0 186.17k  93.09k 186.17k 131.64k  93.09k
    # 查询的字符数
    # Query size           455      15     440  227.50     440  300.52  227.50
    

    图片 2

    第二有的:查询分组总括结果
    Rank:全部语句的排名,私下认可按查询时间降序排列,通过--order-by钦赐
    Query ID:语句的ID,(去掉多余空格和文件字符,总括hash值卡塔尔
    Response:总的响适这时间
    time:该查询在此次深入分析中总的时间占比
    calls:施行次数,即此番解析总共有多少条那连串型的查询语句
    普拉多/Call:平均每回施行的响合时间
    V/M:响合时间Variance-to-mean的比值
    Item:查询对象

    # Profile
    # Rank Query ID           Response time Calls R/Call V/M   Item
    # ==== ================== ============= ===== ====== ===== ===============
    #    1 0xF9A57DD5A41825CA  2.0529 76.2%     1 2.0529  0.00 SELECT
    #    2 0x4194D8F83F4F9365  0.6401 23.8%     1 0.6401  0.00 SELECT wx_member_base
    

    其三片段:每生龙活虎种查询的详尽总计结果
    由上面查询的详尽计算结果,最上边的表格列出了举行次数、最大、最小、平均、95%等各档期的顺序的总计。
    ID:查询的ID号,和上海教室的Query ID对应
    Databases:数据库名
    Users:种种客户执行的次数(占比卡塔 尔(阿拉伯语:قطر‎
    Query_time distribution :查询时间遍及, 长短浮现区间占比,本例中1s-10s里边查询数量是10s以上的两倍。
    Tables:查询中提到到的表
    Explain:SQL语句

    图片 3

    # Query 1: 0 QPS, 0x concurrency, ID 0xF9A57DD5A41825CA at byte 802 ______
    # This item is included in the report because it matches --limit.
    # Scores: V/M = 0.00
    # Time range: all events occurred at 2016-11-22 06:11:40
    # Attribute    pct   total     min     max     avg     95%  stddev  median
    # ============ === ======= ======= ======= ======= ======= ======= =======
    # Count         50       1
    # Exec time     76      2s      2s      2s      2s      2s       0      2s
    # Lock time      0       0       0       0       0       0       0       0
    # Rows sent     20       1       1       1       1       1       0       1
    # Rows examine   0       0       0       0       0       0       0       0
    # Query size     3      15      15      15      15      15       0      15
    # String:
    # Databases    test
    # Hosts        192.168.8.1
    # Users        mysql
    # Query_time distribution
    #   1us
    #  10us
    # 100us
    #   1ms
    #  10ms
    # 100ms
    #    1s  ################################################################
    #  10s+
    # EXPLAIN /*!50100 PARTITIONS*/
    select sleep(2)G
    

    图片 4

    语法:

    概述

    水平拆分是因此某种政策将数据分片来囤积,分库内分表和分库两有些,每片数据会分散到不相同的MySQL表或库,达到布满式的法力,能够辅助相当的大的数据量。后边的表分区本质上也是风姿洒脱种特有的库内分表

    库内分表,仅仅是单纯的缓慢解决了单一表数据过大的难点,由于未有把表的数据分布到分化的机械上,因而对于减轻MySQL服务器的下压力来讲,并从未太大的效果,咱们要么角逐同多个物理机上的IO、CPU、互连网,那么些将在通过分库来消除

    前面垂直拆分的客户表如若展热水平拆分,结果是:

    图片 5

    实在意况中反复会是垂直拆分和品位拆分的组合,就要Users_A_MUsers_N_Z再拆成UsersUserExtras,那样后生可畏共四张表

    水平拆分的帮助和益处是:

    • 不设有单库大数据和高产出的性格瓶颈

    • 应用端改过很少

    • 做实了系统的地西泮和负载技术

    缺点是:

    • 分片事务后生可畏致性难以消除

    • 跨节点Join质量差,逻辑复杂

    • 多少数十次恢宏难度跟维护量非常的大

    ================================================ N/S matched: perl-Diges

    perl-Digest.noarch : Modules that calculate message digests
    perl-Digest-BubbleBabble.noarch : Create bubble-babble fingerprints
    perl-Digest-CRC.x86_64 : Generic CRC functions
    perl-Digest-HMAC.noarch : Keyed-Hashing for Message Authentication
    perl-Digest-JHash.x86_64 : Perl extension for 32 bit Jenkins Hashing Algorithm
    perl-Digest-MD2.x86_64 : Perl interface to the MD2 Algorithm
    perl-Digest-MD4.x86_64 : Perl interface to the MD4 Algorithm
    perl-Digest-MD5.x86_64 : Perl interface to the MD5 algorithm
    perl-Digest-MD5-File.noarch : Perl extension for getting MD5 sums for files and URLs
    perl-Digest-PBKDF2.noarch : Digest module using the PBKDF2 algorithm
    perl-Digest-Perl-MD5.noarch : Perl implementation of Ron Rivest's MD5 Algorithm
    perl-Digest-SHA.x86_64 : Perl extension for SHA-1/224/256/384/512
    perl-Digest-SHA1.x86_64 : Digest-SHA1 Perl module
    perl-Digest-SHA3.x86_64 : Perl extension for SHA-3

    Name and summary matches only, use "search all" for everything.
    [root@node1 bin]# yum install perl-Digest-MD5.x86_64 perl-Digest-MD5-File.noarch

    4.各工具用法简要介绍(详细内容:)
    (1)慢查询日志解析总计

    pt-query-digest /usr/local/mysql/data/slow.log
    

    (2)服务器摘要

    pt-summary 
    

    (3)服务器磁盘监测

    pt-diskstats 
    

    (4)mysql服务地方摘要

    pt-mysql-summary -- --user=root --password=root 
    

    三、pt-query-digest语法及关键选项

    图片 6

    pt-query-digest [OPTIONS] [FILES] [DSN]
    --create-review-table  当使用--review参数把分析结果输出到表中时,如果没有表就自动创建。
    --create-history-table  当使用--history参数把分析结果输出到表中时,如果没有表就自动创建。
    --filter  对输入的慢查询按指定的字符串进行匹配过滤后再进行分析
    --limit    限制输出结果百分比或数量,默认值是20,即将最慢的20条语句输出,如果是50%则按总响应时间占比从大到小排序,输出到总和达到50%位置截止。
    --host  mysql服务器地址
    --user  mysql用户名
    --password  mysql用户密码
    --history 将分析结果保存到表中,分析结果比较详细,下次再使用--history时,如果存在相同的语句,且查询所在的时间区间和历史表中的不同,则会记录到数据表中,可以通过查询同一CHECKSUM来比较某类型查询的历史变化。
    --review 将分析结果保存到表中,这个分析只是对查询条件进行参数化,一个类型的查询一条记录,比较简单。当下次使用--review时,如果存在相同的语句分析,就不会记录到数据表中。
    --output 分析结果输出类型,值可以是report(标准分析报告)、slowlog(Mysql slow log)、json、json-anon,一般使用report,以便于阅读。
    --since 从什么时间开始分析,值为字符串,可以是指定的某个”yyyy-mm-dd [hh:mm:ss]”格式的时间点,也可以是简单的一个时间值:s(秒)、h(小时)、m(分钟)、d(天),如12h就表示从12小时前开始统计。
    --until 截止时间,配合—since可以分析一段时间内的慢查询。
    

    图片 7

    图片 8

    缓存

    缓存可以生出在此些档案的次序:

    • MySQL内部:在系统调优参数介绍了相关安装

    • 数码访谈层:比如MyBatis针对SQL语句做缓存,而Hibernate能够确切到单个记录,这里缓存的靶子主假如长久化对象Persistence Object

    • 采纳服务层:这里能够由此编制程序手腕对缓存做到更加精准的调控和更加多的兑现政策,这里缓存的靶子是数量传输对象Data Transfer Object

    • Web层:针对web页面做缓存

    • 浏览器顾客端:客商端的缓存

    能够依赖实际情况在一个等级次序或多少个档次结合步向缓存。这里最主要介绍下服务层的缓存实现,近日主要有三种方法:

    • 直写式(Write Through卡塔 尔(英语:State of Qatar):在数量写入数据库后,同期立异缓存,维持数据库与缓存的生机勃勃致性。那也是当下超越八分之四运用缓存框架如Spring Cache的干活议程。这种达成特简单,同步好,但功效经常。

    • 回写式(Write Back卡塔尔:当有数量要写入数据库时,只会更新缓存,然后异步批量的将缓存数据同步到数据库上。这种达成比较复杂,必要超多的应用逻辑,同临时候大概会发出数据库与缓存的不一致步,但功效超高。

    一、简介

    pt-query-digest是用以分析mysql慢查询的三个工具,它能够剖判binlog、General log、slowlog,也得以因而SHOWPROCESSLIST或然经过tcpdump抓取的MySQL公约数据来张开解析。能够把解析结果输出到文件中,深入分析进程是先对查询语句的条件进行参数化,然后对参数化今后的查询实行分组计算,总结出各查询的施行时间、次数、占比等,能够依附剖析结果搜索难题开展优化。

    SELECT * FROM (
    select ActionTargetType+actiontype as TypeResult, COUNT(RowGuid) as Number from BanJianLogInfo group by ActionTargetType,actiontype
    union
    select ActionTargetType+OperateResult+'总数' as TypeResult,count(*) from BanJianLogInfo
    group by ActionTargetType,OperateResult
    union
    select ActionTargetType+'总数' as TypeResult,count(*) from BanJianLogInfo group by ActionTargetType
    )temp
    PIVOT
    ( sum(Number) /*行转列后 列的值*/ FOR
    temp.TypeResult/*亟待行转列的列*/ IN ([办件消息成功总数],[办件音信更新],[办件消息退步总的数量],[办件音信新扩张]/*列的值*/)
    ) AS T
    转换前

    宽容MySQL且可水平扩张的数据库

    近来也许有部分开源数据库包容MySQL契约,如:

    • TiDB

    • Cubrid

    但其工业品质和MySQL尚有差别,且须求超大的运行投入,假若想将原本的MySQL迁移到可水平扩充的新数据库中,能够思忖部分云数据库:

    • 阿里云PetaData

    • 阿里云OceanBase

    • 腾讯云DCDB

    五、用法示例

    1.间接解析慢查询文件:

    pt-query-digest  slow.log > slow_report.log
    

    2.剖判如今12刻钟内的查询:

    pt-query-digest  --since=12h  slow.log > slow_report2.log
    

    3.分析指准时期范围内的询问:

    pt-query-digest slow.log --since '2017-01-07 09:30:00' --until '2017-01-07 10:00:00'> > slow_report3.log
    

    4.深入分析指包含select语句的慢查询

    pt-query-digest --filter '$event->{fingerprint} =~ m/^select/i' slow.log> slow_report4.log
    

    5.针对某些客户的慢查询

    pt-query-digest --filter '($event->{user} || "") =~ m/^root/i' slow.log> slow_report5.log
    

    6.查询全部全部的全表扫描或full join的慢查询

    pt-query-digest --filter '(($event->{Full_scan} || "") eq "yes") ||(($event->{Full_join} || "") eq "yes")' slow.log> slow_report6.log
    

    7.把询问保存到query_review表

    pt-query-digest --user=root –password=abc123 --review  h=localhost,D=test,t=query_review--create-review-table  slow.log
    

    8.把询问保存到query_history表

    pt-query-digest  --user=root –password=abc123 --review  h=localhost,D=test,t=query_history--create-review-table  slow.log_0001
    pt-query-digest  --user=root –password=abc123 --review  h=localhost,D=test,t=query_history--create-review-table  slow.log_0002
    

    9.经过tcpdump抓取mysql的tcp左券数据,然后再剖判

    tcpdump -s 65535 -x -nn -q -tttt -i any -c 1000 port 3306 > mysql.tcp.txt
    pt-query-digest --type tcpdump mysql.tcp.txt> slow_report9.log
    

    10.分析binlog

    mysqlbinlog mysql-bin.000093 > mysql-bin000093.sql
    pt-query-digest  --type=binlog  mysql-bin000093.sql > slow_report10.log
    

    11.分析general log

    pt-query-digest  --type=genlog  localhost.log > slow_report11.log
    

    上一篇:MySQL慢查询(意气风发卡塔尔国 - 开启慢查询

     查看更加的多:
    MySQL优化
    MySQL各存储引擎
    MySQL锁详解
    MySQL事务
    MySQL索引类型

    参谋资料:

    图片 9

    进步硬件

    Scale up,这几个相当的少说了,根据MySQL是CPU密集型照旧I/O密集型,通过升级CPU和内部存款和储蓄器、使用SSD,都能通晓升高MySQL品质

    二、安装pt-query-digest

    1.下载页面:
    2.perl的模块

    yum install -y perl-CPAN perl-Time-HiRes
    

    3.设置步骤
    办法生龙活虎:rpm安装(此种安装情势有超级大可能率会失效卡塔 尔(英语:State of Qatar)

    cd /usr/local/src
    wget percona.com/get/percona-toolkit.rpm
    yum install -y percona-toolkit.rpm
    

    工具安装目录在:/usr/bin

    方法二:源码安装

    cd /usr/local/src
    wget percona.com/get/percona-toolkit.tar.gz
    tar zxf percona-toolkit.tar.gz
    cd percona-toolkit-2.2.19
    perl Makefile.PL PREFIX=/usr/local/percona-toolkit
    make && make install
    

    工具安装目录在:/usr/local/percona-toolkit/bin

     

    选择命令报错

    [root@node1 bin]# ./pt-diskstats
    Can't locate Digest/MD5.pm in @INC (@INC contains: /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5 .) at ./pt-diskstats line 1221.
    BEGIN failed--compilation aborted at ./pt-diskstats line 1221.

     

    一网打尽办法

    施夷光行命令yum search perl-Diges,根据你须要的装置相应的包

    本例中报错贫乏 Digest/MD5.pm 所以用yum安装此包就能够

    [root@node1 bin]# yum search perl-Diges
    Loaded plugins: fastestmirror
    Loading mirror speeds from cached hostfile

    SELECT * FROM TableName temp /*须求行转列数据源*/
    PIVOT
    ( sum(ColumnName1) /*行转列后 列的值*/ FOR
    temp.ColumnName2/*内需行转列的列*/ IN ([办件新闻成功总量],[办件音信更新],[办件信息失利总的数量],[办件音信新添]/*列的值*/)
    ) AS T

    当MySQL单表记录数过大时,增加和删除改查质量都会大幅度下落,能够参见以下步骤来优化:

    系统调优参数

    能够应用上面多少个工具来做标准测量试验:

    • sysbench:三个模块化,跨平台以至四线程的品质测量试验工具

    • iibench-mysql:基于 Java 的 MySQL/Percona/MariaDB 索引进行扦插品质测量检验工具

    • tpcc-mysql:Percona开采的TPC-C测量检验工具

    切实的调优参数内容相当多,具体可参看官方文书档案,这里介绍部分相比较关键的参数:

    • back_log:back_log值建议在MySQL暂且告风流浪漫段落回答新央求以前的长期内有些个供给能够被存在货仓中。也正是说,假使MySql的一连数据到达max_connections时,新来的伸手将会被存在酒馆中,以伺机某风流倜傥一而再再而三释放财富,该货仓的数目即back_log,要是等待连接的多少超越back_log,将不被付与连接财富。能够从暗中认可的50升至500

    • wait_timeout:数据库连接闲置时间,闲置连接会占用内部存款和储蓄器财富。可以从暗许的8小时减到半钟头

    • max_user_connection: 最奥斯汀接数,默感觉0无上限,最佳设三个靠边上限

    • thread_concurrency:并发线程数,设为CPU核数的两倍

    • skip_name_resolve:禁绝对表面连接举行DNS深入解析,消亡DNS深入解析时间,但要求具有长途主机用IP访谈

    • key_buffer_size:索引块的缓存大小,增添会提高索引处理速度,对MyISAM表质量影响最大。对于内部存款和储蓄器4G左右,可设为256M或384M,通过查询show status like 'key_read%',保证key_reads / key_read_requests在0.1%之下最棒

    • innodb_buffer_pool_size:缓存数据块和索引块,对InnoDB表质量影响最大。通过询问show status like 'Innodb_buffer_pool_read%',保证(Innodb_buffer_pool_read_requests – Innodb_buffer_pool_reads) / Innodb_buffer_pool_read_requests越高越好

    • innodb_additional_mem_pool_size:InnoDB存储引擎用来寄存数据字典音信以致部分里面数据结构的内部存款和储蓄器空间大小,当数据库对象十分的多的时候,适当调治该参数的分寸以保证全数数据都能寄放在内存中提升访谈功能,当过小的时候,MySQL会记录Warning音讯到数据库的错误日志中,此时就须求该调节那么些参数大小

    • innodb_log_buffer_size:InnoDB存款和储蓄引擎的事体日志所使用的缓冲区,经常的话不提出超过32MB

    • query_cache_size:缓存MySQL中的ResultSet,约等于一条SQL语句实践的结果集,所以只是只可以针对select语句。当有些表的数目有其余其他变动,都会产生全部援引了该表的select语句在Query Cache中的缓存数据失效。所以,当大家的数额变化非常频仍的气象下,使用Query Cache大概会劳民伤财。根据命中率(Qcache_hits/(Qcache_hits+Qcache_inserts)*100))开展调解,平日不提议太大,256MB恐怕早已基本上了,大型的配置型静态数据可适度调大.
      能够由此命令show status like 'Qcache_%'查看近年来系统Query catch使用大小

    • read_buffer_size:MySql读入缓冲区大小。对表进行每一种扫描的伸手将分配二个读入缓冲区,MySql会为它分配生龙活虎段内存缓冲区。要是对表的依次扫描央浼非常频仍,能够经过扩张该变量值甚至内部存款和储蓄器缓冲区大小提升其属性

    • sort_buffer_size:MySql试行排序使用的缓冲大小。假若想要增加ORDER BY的进程,首先看是否能够让MySQL使用索引并不是非常的排序阶段。倘诺不可能,能够尝尝扩展sort_buffer_size变量的轻重缓急

    • read_rnd_buffer_size:MySql的恣意读缓冲区大小。当按私下顺序读取行时(举例,依据相排版序依次),将分配一个无约束读缓存区。实行排序查询时,MySql会率先扫描三遍该缓冲,防止止磁盘寻觅,提升查询速度,假如必要排序一大波数额,可适用调高该值。但MySql会为各个客商连接发放该缓冲空间,所以应竭尽方便设置该值,以幸免内部存款和储蓄器用渡过大。

    • record_buffer:每种实行二个梯次扫描的线程为其扫描的每张表分配那个分寸的贰个缓冲区。若是您做过多顺序扫描,恐怕想要扩大该值

    • thread_cache_size:保存当前从未有过与连接关联不过希图为后边新的接连服务的线程,能够高速响应连接的线程央浼而无需创制新的

    • table_cache:类似于thread_cache_size,但用来缓存表文件,对InnoDB效果相当的小,首要用于MyISAM

    单表优化

    只有单表数据未来会一向声犹在耳上升,不然不要一同首就思索拆分,拆分会带给逻辑、陈设、运转的各类复杂度,通常以整型值为主的表在千万级以下,字符串为主的表在五百万以下是从未有过太大主题材料的。而实际上超级多时候MySQL单表的性子照旧有比较多优化空间,甚至能符合规律支撑千万级以上的数据量:

    本文由金沙国际官网发布于数据库,转载请注明出处:MySQL优化指南,digest详解慢查询日志

    关键词: