欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

分析Mysql表讀寫(xiě)、索引等操作的sql語(yǔ)句效率優(yōu)化問(wèn)題

 更新時(shí)間:2018年12月08日 10:36:58   作者:執(zhí)筆記憶的空白  
今天小編就為大家分享一篇關(guān)于分析Mysql表讀寫(xiě)、索引等操作的sql語(yǔ)句效率優(yōu)化問(wèn)題,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧

上次我們說(shuō)到mysql的一些sql查詢方面的優(yōu)化,包括查看explain執(zhí)行計(jì)劃,分析索引等等。今天我們分享一些 分析mysql表讀寫(xiě)、索引等等操作的sql語(yǔ)句。

閑話不多說(shuō),直接上代碼:

反映表的讀寫(xiě)壓力

SELECT file_name AS file,
    count_read,
    sum_number_of_bytes_read AS total_read,
    count_write,
    sum_number_of_bytes_write AS total_written,
    (sum_number_of_bytes_read + sum_number_of_bytes_write) AS total
 FROM performance_schema.file_summary_by_instance
ORDER BY sum_number_of_bytes_read+ sum_number_of_bytes_write DESC;

反映文件的延遲

SELECT (file_name) AS file,
    count_star AS total,
    CONCAT(ROUND(sum_timer_wait / 3600000000000000, 2), 'h') AS total_latency,
    count_read,
    CONCAT(ROUND(sum_timer_read / 1000000000000, 2), 's') AS read_latency,
    count_write,
    CONCAT(ROUND(sum_timer_write / 3600000000000000, 2), 'h')AS write_latency
 FROM performance_schema.file_summary_by_instance
ORDER BY sum_timer_wait DESC;

table 的讀寫(xiě)延遲

SELECT object_schema AS table_schema,
       object_name AS table_name,
       count_star AS total,
       CONCAT(ROUND(sum_timer_wait / 3600000000000000, 2), 'h') as total_latency,
       CONCAT(ROUND((sum_timer_wait / count_star) / 1000000, 2), 'us') AS avg_latency,
       CONCAT(ROUND(max_timer_wait / 1000000000, 2), 'ms') AS max_latency
 FROM performance_schema.objects_summary_global_by_type
    ORDER BY sum_timer_wait DESC;

查看表操作頻度

SELECT object_schema AS table_schema,
      object_name AS table_name,
      count_star AS rows_io_total,
      count_read AS rows_read,
      count_write AS rows_write,
      count_fetch AS rows_fetchs,
      count_insert AS rows_inserts,
      count_update AS rows_updates,
      count_delete AS rows_deletes,
       CONCAT(ROUND(sum_timer_fetch / 3600000000000000, 2), 'h') AS fetch_latency,
       CONCAT(ROUND(sum_timer_insert / 3600000000000000, 2), 'h') AS insert_latency,
       CONCAT(ROUND(sum_timer_update / 3600000000000000, 2), 'h') AS update_latency,
       CONCAT(ROUND(sum_timer_delete / 3600000000000000, 2), 'h') AS delete_latency
   FROM performance_schema.table_io_waits_summary_by_table
    ORDER BY sum_timer_wait DESC ;

索引狀況

SELECT OBJECT_SCHEMA AS table_schema,
        OBJECT_NAME AS table_name,
        INDEX_NAME as index_name,
        COUNT_FETCH AS rows_fetched,
        CONCAT(ROUND(SUM_TIMER_FETCH / 3600000000000000, 2), 'h') AS select_latency,
        COUNT_INSERT AS rows_inserted,
        CONCAT(ROUND(SUM_TIMER_INSERT / 3600000000000000, 2), 'h') AS insert_latency,
        COUNT_UPDATE AS rows_updated,
        CONCAT(ROUND(SUM_TIMER_UPDATE / 3600000000000000, 2), 'h') AS update_latency,
        COUNT_DELETE AS rows_deleted,
        CONCAT(ROUND(SUM_TIMER_DELETE / 3600000000000000, 2), 'h')AS delete_latency
FROM performance_schema.table_io_waits_summary_by_index_usage
WHERE index_name IS NOT NULL
ORDER BY sum_timer_wait DESC;

全表掃描情況

SELECT object_schema,
    object_name,
    count_read AS rows_full_scanned
 FROM performance_schema.table_io_waits_summary_by_index_usage
WHERE index_name IS NULL
  AND count_read > 0
ORDER BY count_read DESC;

沒(méi)有使用的index

SELECT object_schema,
    object_name,
    index_name
  FROM performance_schema.table_io_waits_summary_by_index_usage
 WHERE index_name IS NOT NULL
  AND count_star = 0
  AND object_schema not in ('mysql','v_monitor')
  AND index_name <> 'PRIMARY'
 ORDER BY object_schema, object_name;

糟糕的sql問(wèn)題摘要

SELECT (DIGEST_TEXT) AS query,
    SCHEMA_NAME AS db,
    IF(SUM_NO_GOOD_INDEX_USED > 0 OR SUM_NO_INDEX_USED > 0, '*', '') AS full_scan,
    COUNT_STAR AS exec_count,
    SUM_ERRORS AS err_count,
    SUM_WARNINGS AS warn_count,
    (SUM_TIMER_WAIT) AS total_latency,
    (MAX_TIMER_WAIT) AS max_latency,
    (AVG_TIMER_WAIT) AS avg_latency,
    (SUM_LOCK_TIME) AS lock_latency,
    format(SUM_ROWS_SENT,0) AS rows_sent,
    ROUND(IFNULL(SUM_ROWS_SENT / NULLIF(COUNT_STAR, 0), 0)) AS rows_sent_avg,
    SUM_ROWS_EXAMINED AS rows_examined,
    ROUND(IFNULL(SUM_ROWS_EXAMINED / NULLIF(COUNT_STAR, 0), 0)) AS rows_examined_avg,
    SUM_CREATED_TMP_TABLES AS tmp_tables,
    SUM_CREATED_TMP_DISK_TABLES AS tmp_disk_tables,
    SUM_SORT_ROWS AS rows_sorted,
    SUM_SORT_MERGE_PASSES AS sort_merge_passes,
    DIGEST AS digest,
    FIRST_SEEN AS first_seen,
    LAST_SEEN as last_seen
  FROM performance_schema.events_statements_summary_by_digest d
where d
ORDER BY SUM_TIMER_WAIT DESC
limit 20;

掌握這些sql,你能輕松知道你的庫(kù)那些表存在問(wèn)題,然后考慮怎么去優(yōu)化。   

總結(jié)

以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)腳本之家的支持。如果你想了解更多相關(guān)內(nèi)容請(qǐng)查看下面相關(guān)鏈接

相關(guān)文章

  • mysql like查詢字符串示例語(yǔ)句

    mysql like查詢字符串示例語(yǔ)句

    在mysql中如果我們要模糊查詢數(shù)據(jù)我們可以使用like帶%%號(hào)來(lái)實(shí)現(xiàn)查詢,下面我來(lái)簡(jiǎn)單的介紹一下關(guān)于mysql like使用方法
    2013-10-10
  • MySQL中 and or 查詢的優(yōu)先級(jí)分析

    MySQL中 and or 查詢的優(yōu)先級(jí)分析

    這個(gè)可能是容易被忽略的問(wèn)題,首選我們要清楚,MySQL中,AND的執(zhí)行優(yōu)先級(jí)高于OR。也就是說(shuō),在沒(méi)有小括號(hào)()的限制下,總是優(yōu)先執(zhí)行AND語(yǔ)句,再執(zhí)行OR語(yǔ)句
    2021-03-03
  • MySQL主從復(fù)制原理詳情

    MySQL主從復(fù)制原理詳情

    這篇文章主要介紹了MySQL主從復(fù)制原理詳情,MySQL?主從復(fù)制是指數(shù)據(jù)可以從一個(gè)MySQL數(shù)據(jù)庫(kù)服務(wù)器主節(jié)點(diǎn)復(fù)制到一個(gè)或多個(gè)從節(jié)點(diǎn),文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹。感興趣的小伙伴可以參考一下
    2022-06-06
  • 解決MySQL因不能創(chuàng)建 PID 導(dǎo)致無(wú)法啟動(dòng)的方法

    解決MySQL因不能創(chuàng)建 PID 導(dǎo)致無(wú)法啟動(dòng)的方法

    這篇文章主要給大家介紹了關(guān)于解決MySQL因不能創(chuàng)建 PID 導(dǎo)致無(wú)法啟動(dòng)的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面跟著小編一起來(lái)學(xué)習(xí)學(xué)習(xí)吧。
    2017-06-06
  • MySQL 文本文件的導(dǎo)入導(dǎo)出數(shù)據(jù)的方法

    MySQL 文本文件的導(dǎo)入導(dǎo)出數(shù)據(jù)的方法

    但有時(shí)為了更快速地插入大批量數(shù)據(jù)或交換數(shù)據(jù),需要從文本中導(dǎo)入數(shù)據(jù)或?qū)С鰯?shù)據(jù)到文本。下面的具體的方法大家可以參考下。多測(cè)試。
    2009-11-11
  • MYSQL Left Join優(yōu)化(10秒優(yōu)化到20毫秒內(nèi))

    MYSQL Left Join優(yōu)化(10秒優(yōu)化到20毫秒內(nèi))

    在實(shí)際開(kāi)發(fā)中,相信大多數(shù)人都會(huì)用到j(luò)oin進(jìn)行連表查詢,但是有些人發(fā)現(xiàn),用join好像效率很低,而且驅(qū)動(dòng)表不同,執(zhí)行時(shí)間也不同。那么join到底是如何執(zhí)行的呢,本文就詳細(xì)的介紹一下
    2021-12-12
  • MySQL ALTER命令使用詳解

    MySQL ALTER命令使用詳解

    這篇文章主要為大家詳細(xì)介紹了MySQL ALTER命令的使用方法,簡(jiǎn)單實(shí)用,感興趣的小伙伴們可以參考一下
    2016-05-05
  • Mysql中關(guān)于Incorrect string value的解決方案

    Mysql中關(guān)于Incorrect string value的解決方案

    在對(duì)mysql數(shù)據(jù)庫(kù)中插入數(shù)據(jù)的時(shí)候,直接插入中文是沒(méi)有問(wèn)題的!但是用預(yù)編譯語(yǔ)句時(shí),用流對(duì)數(shù)據(jù)進(jìn)行處理總報(bào)incorrect string value這個(gè)異常。本篇文章教給你解決方法
    2021-09-09
  • MySQL 修改數(shù)據(jù)庫(kù)名稱(chēng)的一個(gè)新奇方法

    MySQL 修改數(shù)據(jù)庫(kù)名稱(chēng)的一個(gè)新奇方法

    這篇文章主要介紹了MySQL 修改數(shù)據(jù)庫(kù)名稱(chēng)的一個(gè)新奇方法,MySQL 修改數(shù)據(jù)庫(kù)名的一個(gè)變通方法,需要的朋友可以參考下
    2014-07-07
  • mysql解壓縮方式安裝和徹底刪除的方法圖文詳解

    mysql解壓縮方式安裝和徹底刪除的方法圖文詳解

    這篇文章主要介紹了mysql解壓縮方式安裝和徹底刪除的方法,只有mysql徹底刪除干凈了,才可以裝另外新的版本,需要的朋友可以參考下
    2018-01-01

最新評(píng)論