欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

MySQL慢查詢?nèi)罩?/h1>

筆記內(nèi)容:MySQL慢查詢?nèi)罩?/strong>

專注于為中小企業(yè)提供網(wǎng)站建設、成都網(wǎng)站建設服務,電腦端+手機端+微信端的三站合一,更高效的管理,為中小企業(yè)興隆臺免費做網(wǎng)站提供優(yōu)質(zhì)的服務。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動了近1000家企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設實現(xiàn)規(guī)模擴充和轉(zhuǎn)變。

筆記日期:2017-12-10


<br>

  • MySQL日志文件系統(tǒng)的組成
  • 通用查詢?nèi)罩?/li>
  • 慢查詢?nèi)罩?/li>

和大多數(shù)關系型數(shù)據(jù)庫一樣,日志文件是MySQL數(shù)據(jù)庫的重要組成部分。MySQL有幾種不同的日志文件,通常包括錯誤日志文件,二進制日志,通用日志,慢查詢?nèi)罩?,等等。這些日志可以幫助我們定位mysqld內(nèi)部發(fā)生的事件,數(shù)據(jù)庫性能故障,記錄數(shù)據(jù)的變更歷史,用戶恢復數(shù)據(jù)庫等等。

<br>

MySQL日志文件系統(tǒng)的組成

1.錯誤日志:記錄啟動、運行或停止mysqld時出現(xiàn)的問題。

2.通用查詢?nèi)罩荆河涗浗⒌目蛻舳诉B接和執(zhí)行的語句。

3.更新日志:記錄更改數(shù)據(jù)的語句。該日志在MySQL 5.1中已不再使用。

4.二進制日志:記錄所有更改數(shù)據(jù)的語句。還用于主從復制。

5.慢查詢?nèi)罩荆河涗浰袌?zhí)行時間超過long_query_time秒的所有查詢或不使用索引的查詢。

6.Innodb日志:innodb redo log

7.中繼日志:從庫從主庫獲取到的要更新的數(shù)據(jù)的日志。

默認情況下,所有日志創(chuàng)建于mysqld數(shù)據(jù)目錄中。 可以通過刷新日志,來強制mysqld來關閉和重新打開日志文件(或者在某些情況下切換到一個新的日志)。當你執(zhí)行一個FLUSH LOGS語句或執(zhí)行mysqladmin flush-logs或mysqladmin refresh時,則日志被老化。對于存在MySQL復制的情形下,從復制服務器將維護更多日志文件,被稱為接替日志。

<br>

通用查詢?nèi)罩?/h5>

在學習通用日志查詢時,需要知道幾個數(shù)據(jù)庫中的常用命令:

1.show variables like '%version%';

這個命令,可以顯示當前數(shù)據(jù)庫中與版本號相關的信息。示例:

mysql> show variables like '%version%';  
+-------------------------+----------------+
| Variable_name           | Value          |
+-------------------------+----------------+
| innodb_version          | 5.7.14         |
| protocol_version        | 10             |
| slave_type_conversions  |                |
| version                 | 10.2.6-MariaDB |
| version_comment         | MariaDB Server |
| version_compile_machine | x86_64         |
| version_compile_os      | Linux          |
| version_malloc_library  | system         |
| version_ssl_library     | YaSSL 2.4.2    |
| wsrep_patch_version     | wsrep_25.19    |
+-------------------------+----------------+
10 rows in set (0.01 sec)

mysql>

以下這個命令是用于查看當前的通用日志查詢是否開啟,如果general_log的值為ON則為開啟,為OFF則為關閉(默認情況下是關閉的)。

2.show variables like '%general%';

示例:

mysql> show variables like '%general%';
+------------------+------------+
| Variable_name    | Value      |
+------------------+------------+
| general_log      | OFF        |
| general_log_file | server.log |
+------------------+------------+
2 rows in set (0.00 sec)

mysql>

以下這個命令是用于查看當前通用查詢?nèi)罩据敵龅母袷剑琹og_output的值可以是FILE(存儲在數(shù)數(shù)據(jù)庫的數(shù)據(jù)文件中的hostname.log),也可以是TABLE(存儲在數(shù)據(jù)庫中的mysql.general_log)。

3.show variables like '%log_output%';

示例:

mysql> show variables like '%log_output%';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| log_output    | FILE  |
+---------------+-------+
1 row in set (0.00 sec)

mysql> 

<br>

如何開啟MySQL通用查詢?nèi)罩?,以及使用何種方式去記錄這些通用查詢?nèi)罩荆?/h6>
  • 開啟通用日志查詢: set global general_log=on;

  • 關閉通用日志查詢: set global general_log=off;

  • 設置將通用日志記錄到數(shù)據(jù)庫表格中: set globallog_output='TABLE';

  • 設置將通用日志記錄到本地文件中: set globallog_output='FILE';

  • 設置將通用日志記錄到數(shù)據(jù)庫表和本地文件中:set global log_output='FILE,TABLE';

示例:

mysql> set global general_log=on;
Query OK, 0 rows affected (0.01 sec)

mysql> set global log_output='FILE,TABLE';
Query OK, 0 rows affected (0.03 sec)

mysql> select * from mysql.general_log;
+----------------------------+---------------------------+-----------+-----------+--------------+---------------------------------+
| event_time                 | user_host                 | thread_id | server_id | command_type | argument                        |
+----------------------------+---------------------------+-----------+-----------+--------------+---------------------------------+
| 2017-12-10 17:47:35.177238 | root[root] @ localhost [] |       189 |         1 | Query        | select * from mysql.general_log |
| 2017-12-10 17:47:52.608628 | root[root] @ localhost [] |       189 |         1 | Query        | select * from mysql.general_log |
| 2017-12-10 17:47:55.138903 | root[root] @ localhost [] |       189 |         1 | Query        | select * from mysql.general_log |
+----------------------------+---------------------------+-----------+-----------+--------------+---------------------------------+
3 rows in set (0.00 sec)

mysql>

記錄到mysql.general_log表中的數(shù)據(jù)如下:
MySQL慢查詢?nèi)罩?></p><p>默認情況下記錄在本地文件中的通用查詢?nèi)罩疚募Q的前綴為主機名,后綴為.log,可以使用find命令尋找,示例:</p><pre><code>[root@server ~]# find / -name

注意:上述命令只是臨時生效,當MySQL重啟后則會失效,如果要永久生效,需要配置my.cnf文件

my.cnf文件需要配置的內(nèi)容如下:

general_log=1   #為1表示開啟通用日志查詢,值為0表示關閉通用日志查詢
log_output=FILE,TABLE   #設置通用日志的輸出格式為文件和表

如果沒有開啟通用日志查詢的話,general_log表是空的:

mysql> select * from mysql.general_log;
Empty set (0.00 sec)

mysql>

<br>

慢查詢?nèi)罩?/h5>

  MySQL的慢查詢?nèi)罩臼荕ySQL提供的一種日志記錄,用來記錄在MySQL中響應時間超過閾值的語句,具體指運行時間超過long_query_time值的SQL語句,就會被記錄到慢查詢?nèi)罩局校ㄈ罩究梢詫懭胛募蛘邤?shù)據(jù)庫表,如果對性能要求高的話,建議寫文件)。所以慢查詢?nèi)罩揪褪怯涗沵ysql服務器中影響數(shù)據(jù)庫性能的相關SQL語句的,通過對這些特殊的SQL語句分析,改進以達到提高數(shù)據(jù)庫性能的目的。默認情況下,MySQL數(shù)據(jù)庫是不開啟慢查詢?nèi)罩镜模琹ong_query_time的默認值為10(即10秒,通常設置為1秒),即運行10秒以上的語句是慢查詢語句。
  一般情況下,慢查詢發(fā)生在數(shù)據(jù)庫比較大的表格中(比如:一個表的數(shù)據(jù)量有幾百萬),且查詢條件的字段沒有建立索引,此時,要匹配查詢條件的字段會進行全表掃描,查詢耗時超過long_query_time所定義的閾值(預設值),則為慢查詢語句,這些慢查詢語句就會記錄到慢查詢?nèi)罩局小?/p>

使用以下命令可以查看當前慢查詢?nèi)罩镜拈_啟情況:

show variables like '%quer%';

示例:

mysql> show variables like '%quer%';
+---------------------------------+-----------------+
| Variable_name                   | Value           |
+---------------------------------+-----------------+
| expensive_subquery_limit        | 100             |
| ft_query_expansion_limit        | 20              |
| have_query_cache                | YES             |
| log_queries_not_using_indexes   | OFF             |
| long_query_time                 | 10.000000       |
| query_alloc_block_size          | 16384           |
| query_cache_limit               | 1048576         |
| query_cache_min_res_unit        | 4096            |
| query_cache_size                | 1048576         |
| query_cache_strip_comments      | OFF             |
| query_cache_type                | OFF             |
| query_cache_wlock_invalidate    | OFF             |
| query_prealloc_size             | 24576           |
| slow_query_log                  | OFF             |
| slow_query_log_file             | server-slow.log |
| wsrep_sst_donor_rejects_queries | OFF             |
+---------------------------------+-----------------+
16 rows in set (0.00 sec)

mysql> 

需要關注以下的幾個參數(shù):
  1.slow_query_log:的值為ON為開啟慢查詢?nèi)罩荆琌FF則為關閉慢查詢?nèi)罩尽?/p>

  2.slow_query_log_file:的值是記錄的慢查詢?nèi)罩镜轿募校ㄗ⒁猓耗J名為主機名.log,慢查詢?nèi)罩臼欠駥懭胫付ㄎ募?,需要指定慢查詢的輸出日志格式為文件,相關命令為:show variables like ‘%log_output%’;去查看輸出的格式)。

  3.long_query_time:指定了慢查詢的閾值,即如果執(zhí)行語句的時間超過該閾值則為慢查詢語句,默認值為10秒。

  4.log_queries_not_using_indexes:如果值設置為ON,則會記錄所有沒有利用索引的查詢(注意:如果只是將log_queries_not_using_indexes設置為ON,而將slow_query_log設置為OFF,此時該設置也不會生效,即該設置生效的前提是slow_query_log的值設置為ON),一般在性能調(diào)優(yōu)的時候會暫時開啟。

  5.min_examined_row_limit:查詢檢查返回少于該參數(shù)指定行的SQL不被記錄到慢查詢?nèi)罩?/p>

  6.log_slow_queries:指定是否開啟慢查詢?nèi)罩?該參數(shù)要被slow_query_log取代,做兼容性保留)

<br>

和通用查詢?nèi)罩疽粯?,慢查詢?nèi)罩疽彩鞘褂?show variables like '%log_output%'; 語句來查看日志的記錄方式:

mysql> show variables like '%log_output%';
+---------------+------------+
| Variable_name | Value      |
+---------------+------------+
| log_output    | FILE,TABLE |
+---------------+------------+
1 row in set (0.00 sec)

mysql>

<br>

設置記錄日志的方式也是和之前的一樣:

  • 設置將通用日志記錄到數(shù)據(jù)庫表格中: set globallog_output='TABLE';

  • 設置將通用日志記錄到本地文件中: set globallog_output='FILE';

  • 設置將通用日志記錄到數(shù)據(jù)庫表和本地文件中:set global log_output='FILE,TABLE';

<br>

開啟慢查詢?nèi)罩荆?/strong>

mysql> set global slow_query_log=on;
Query OK, 0 rows affected (0.00 sec)

mysql> set global long_query_time=1;  # 將閥值設置為1秒
Query OK, 0 rows affected (0.00 sec)

mysql> set session long_query_time=1; # 將session級別的閥值也設置為1秒
Query OK, 0 rows affected (0.00 sec)

mysql> show variables like '%long_query_time%';  # 查看閥值,默認為10秒
+-----------------+----------+
| Variable_name   | Value    |
+-----------------+----------+
| long_query_time | 1.000000 |
+-----------------+----------+
1 row in set (0.00 sec)

mysql> show variables like '%slow_query_log%';  # 查看慢查詢?nèi)罩緺顟B(tài),ON為開啟狀態(tài),默認為OFF
+---------------------+-----------------+
| Variable_name       | Value           |
+---------------------+-----------------+
| slow_query_log      | ON              |
| slow_query_log_file | server-slow.log |
+---------------------+-----------------+
2 rows in set (0.01 sec)

mysql> show global status like '%slow%';  # 查看慢查詢的記錄數(shù)量
+---------------------+-------+
| Variable_name       | Value |
+---------------------+-------+
| Slow_launch_threads | 0     |
| Slow_queries        | 0     |
+---------------------+-------+
2 rows in set (0.06 sec)

mysql> show variables like 'log_queries_not_using_indexes';   # 查看log_queries_not_using_indexes狀態(tài)
+-------------------------------+-------+
| Variable_name                 | Value |
+-------------------------------+-------+
| log_queries_not_using_indexes | OFF   |
+-------------------------------+-------+
1 row in set (0.00 sec)

mysql> 

如果出現(xiàn)修改之后依舊顯示為默認值的情況,重新登錄mysql就好了,或者在show后面加上global關鍵字也可以。

<br>

關于慢查詢?nèi)罩镜谋碇械臄?shù)據(jù)個文本中的數(shù)據(jù)格式分析:

慢查詢的日志記錄myql.slow_log表中,格式如下:

MySQL慢查詢?nèi)罩?></p><p>查詢語句:</p><blockquote><p>select * from mysql.slow_log;</p></blockquote><p>此時再查看一下慢查詢的記錄數(shù)量:</p><pre><code>mysql> show global status like '%slow%';
+---------------------+-------+
| Variable_name       | Value |
+---------------------+-------+
| Slow_launch_threads | 0     |
| Slow_queries        | 374   |
+---------------------+-------+
2 rows in set (0.00 sec)

mysql></code></pre><p>慢查詢?nèi)罩竞屯ㄓ貌樵內(nèi)罩径际鞘褂玫耐粋€本地文件:</p><pre><code>[root@server ~]# find / -name 'server.log'
/data/mariadb/server.log
[root@server ~]# tail /data/mariadb/server.log
          197 Field List    INNODB_SYS_INDEXES 
          197 Field List    INNODB_SYS_VIRTUAL 
          197 Field List    INNODB_MUTEXES 
          197 Field List    INNODB_SYS_SEMAPHORE_WAITS 
171210 21:43:19   197 Query show tables
171210 21:43:36   197 Query select * from ALL_PLUGINS
171210 21:44:09   197 Query select * from myql.slow_log
171210 21:44:15   197 Query select * from mysql.slow_log
171210 21:44:23   197 Query select * from mysql.slow_log
171210 22:00:12   197 Quit  
[root@server ~]#</code></pre><p>可以看到,不管是表還是文件,都具體記錄了:是哪條sql語句導致慢查詢(sql_text),該慢查詢語句的查詢時間(query_time),鎖表時間(Lock_time),以及掃描過的行數(shù)(rows_examined)等信息。</p><p><br></p><h5>如何手動產(chǎn)生慢查詢語句</h5><p>實際在學習過程中,如何得知設置的慢查詢是有效的?很簡單,我們可以手動產(chǎn)生一條慢查詢語句,比如,如果我們的慢查詢log_query_time的值設置為1,則執(zhí)行以下這條語句就可以了:</p><blockquote><p>selectsleep(1);</p></blockquote><p>該條語句即是慢查詢語句,之后,便可以在相應的日志輸出文件或表中去查看是否有該條語句。</p>            <p>
                文章標題:<a href=MySQL慢查詢?nèi)罩?/a>
轉(zhuǎn)載源于:http://aaarwkj.com/article4/ipdiie.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供響應式網(wǎng)站、標簽優(yōu)化網(wǎng)站設計公司、企業(yè)建站、電子商務動態(tài)網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

亚洲美女高潮久久久久久久久| 美日韩黄色大片免费看| 日韩欧美二区三区在线| 日韩欧美国产综合一区二区| 97资源视频在线播放| 男女视频一区二区三区在线观看 | 日韩高清在线亚洲专区不卡| 麻豆精品情欲人妻二区| 哈昂~不要啊在线观看| 国产精品成人av在线网站| 一区二区三区国产激情| 亚洲欧洲美洲中文天堂| 亚洲精品成人久久网| 色综合色综合色综合色综合| 国产精品三级久久久| 精品人妻日韩中文字幕| 99蜜桃臀成人美女视频| 中文免费在线观看av| 欧美日韩伦理片在线观看| 国产福利在线观看网站| 国产精品久久久久久久久| 日本成人一区二区在线播放| 免费国产成人在线视频| 91精品蜜臀国产综合久久久久久| 91在线视频国产网站| 国产白丝免费在线观看| 人妻有码系列中文字幕专区| 韩国午夜福利视频网站| 日韩新片一区二区三区| 日本在线电影一区二区三区| 午夜丁香婷婷爽少妇av| 久久91超碰青草在哪里看| 中字幕人妻一区二区三区| av中文字幕熟妇人妻少妇| 人妻熟妇av在线一区二区三区 | 国产精品青青在线观看爽香蕉| 日韩精品一区二区三区四区蜜桃| 欧美亚洲另类麻豆综合在线| 亚洲精品免费一区二区三区| 亚洲最大黄色免费在线观看 | 精华国产一区二区三区|