六月婷婷综合激情-六月婷婷综合-六月婷婷在线观看-六月婷婷在线-亚洲黄色在线网站-亚洲黄色在线观看网站

明輝手游網中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

案例詳細說明mysql中innodb_flush_method方法

[摘要]下面小編就為大家帶來一篇innodb_flush_method取值方法(實例講解)。小編覺得挺不錯的,現在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧innodb_flush_method的幾個典型取值fsync: InnoDB uses the fsync() system call ...
下面小編就為大家帶來一篇innodb_flush_method取值方法(實例講解)。小編覺得挺不錯的,現在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

innodb_flush_method的幾個典型取值


fsync: InnoDB uses the fsync() system call to flush both the data and log files. fsync is the default setting.

O_DSYNC: InnoDB uses O_SYNC to open and flush the log files, and fsync() to flush the data files. InnoDB does not use O_DSYNC directly because there have been problems with it on many varieties of Unix.

O_DIRECT: InnoDB uses O_DIRECT (or directio() on Solaris) to open the data files, and uses fsync() to flush both the data and log files. This option is available on some GNU/Linux versions,FreeBSD, and Solaris.

如何取值,mysql官方文檔是這么建議的


How each settings affects performance depends on hardware configuration and workload. Benchmark
your particular configuration to decide which setting to use, or whether to keep the default setting.
Examine the Innodb_data_fsyncs status variable to see the overall number of fsync() calls for
each setting. The mix of read and write operations in your workload can affect how a setting performs.
For example, on a system with a hardware RAID controller and battery-backed write cache, O_DIRECT
can help to avoid double buffering between the InnoDB buffer pool and the operating system's file
system cache. On some systems where InnoDB data and log files are located on a SAN, the default
value or O_DSYNC might be faster for a read-heavy workload with mostly SELECT statements. Always
test this parameter with hardware and workload that reflect your production environment

也就是說,具體的取值跟硬件配置和工作負載相關,最好做一次壓測來決定。不過通常來說,linux環境下具有raid控制器和write-back寫策略,o_direct是比較好的選擇;如果存儲介質是SAN,那么使用默認fsync或者osync或許更好一些。

通常來說,貌似絕大部分人都取值o_direct,底層有raid卡,讀寫策略設置為write-back。在使用sysbench壓測oltp類型時,我發現o_direct確實比fsync性能優秀一些,看來適用于大部分場景,但是最近碰到一個這樣的sql,客戶反饋很慢,而在相同內存的情況下,它自己搭建的云主機執行相對快很多,后來我發現主要就是innodb_flush_method的設置值不同帶來的巨大性能差異。

測試場景1

innodb_flush_method為默認值,即fsync,緩存池512M,表數據量1.2G,排除緩存池影響,穩定后的結果


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


mysql> SELECT sql_no_cache SUM(outcome)-SUM(income) FROM journal where account_id = '1c6ab4e7-main';
+--------------------------+
  SUM(outcome)-SUM(income)  
+--------------------------+
         -191010.51  
+--------------------------+
1 row in set (1.22 sec)


mysql> SELECT sql_no_cache SUM(outcome)-SUM(income) FROM journal where account_id = '1c6ab4e7-main';
+--------------------------+
  SUM(outcome)-SUM(income)  
+--------------------------+
         -191010.51  
+--------------------------+
1 row in set (1.22 sec)
mysql> explain SELECT sql_no_cache SUM(outcome)-SUM(income) FROM journal where account_id = '1c6ab4e7-main';
+----+-------------+---------+------+---------------+------------+---------+-------+--------+-----------------------+
  id   select_type   table    type   possible_keys   key      key_len   ref    rows    Extra          
+----+-------------+---------+------+---------------+------------+---------+-------+--------+-----------------------+
  1   SIMPLE     journal   ref   account_id    account_id   62     const   161638   Using index condition  
+----+-------------+---------+------+---------------+------------+---------+-------+--------+-----------------------+
1 row in set (0.03 sec)

測試場景2

innodb_flush_method改為o_direct,排除緩存池影響,穩定后的結果


mysql> show variables like '%innodb_flush_me%';
+---------------------+----------+
  Variable_name      Value   
+---------------------+----------+
  innodb_flush_method   O_DIRECT  
+---------------------+----------+
1 row in set (0.00 sec)


mysql> SELECT sql_no_cache SUM(outcome)-SUM(income) FROM journal where account_id = '1c6ab4e7-main';
+--------------------------+
  SUM(outcome)-SUM(income)  
+--------------------------+
         -191010.51  
+--------------------------+
1 row in set (3.22 sec)


mysql> SELECT sql_no_cache SUM(outcome)-SUM(income) FROM journal where account_id = '1c6ab4e7-main';
+--------------------------+
  SUM(outcome)-SUM(income)  
+--------------------------+
         -191010.51  
+--------------------------+
1 row in set (3.02 sec)


mysql> explain SELECT sql_no_cache SUM(outcome)-SUM(income) FROM journal where account_id = '1c6ab4e7-main';
+----+-------------+---------+------+---------------+------------+---------+-------+--------+-----------------------+
  id   select_type   table    type   possible_keys   key      key_len   ref    rows    Extra          
+----+-------------+---------+------+---------------+------------+---------+-------+--------+-----------------------+
  1   SIMPLE     journal   ref   account_id    account_id   62     const   161638   Using index condition  
+----+-------------+---------+------+---------------+------------+---------+-------+--------+-----------------------+
1 row in set (0.00 sec)

結果比較:

兩者執行計劃一摸一樣,性能卻差距很大。在數據庫第一次啟動時的查詢結果也差距很大,o_direct也差很多(測試結果略)。不是很懂為啥這種情況下多了一層操作系統緩存,讀取效率就高了很多,生產環境設置一定要以壓測結果為準,實際效果為準,不能盲目信任經驗值。

改進措施:

不改變innodb_flush_method的情況下,其實這條sql還可以進一步優化,通過添加組合索引(account_id,outcome,income),使得走覆蓋索引掃描,可大大地減少響應時間

【相關推薦】

1. Mysql免費視頻教程

2. MySQL中添加新用戶權限的實例詳解

3. MySQL修改密碼和訪問限制的實例詳解

4. 用正則表達式替換數據庫中的內容的實例詳 解

5. php將圖片儲存mysql中的實例詳解

以上就是實例詳解mysql中innodb_flush_method方法的詳細內容,更多請關注php中文網其它相關文章!


學習教程快速掌握從入門到精通的SQL知識。




主站蜘蛛池模板: 日本国产成人精品视频 | 手机看片久久国产免费不卡 | 亚洲国产另类久久久精品小说 | 色女人天堂 | 亚欧色视频在线观看免费 | 日韩视频第一页 | 天堂资源在线 | 午夜国产福利在线观看 | 日韩精品久久一区二区三区 | 亚洲午夜久久久久中文字幕 | 色婷婷激婷婷深爱五月小说 | 婷婷激情狠狠综合五月 | 欧美亚洲国产精品久久久 | 婷婷六月久久综合丁香76 | 欧美一级在线免费观看 | 日韩黄色在线视频 | 亚洲午夜在线观看 | 青草视频国产 | 四虎在线视频免费观看视频 | 在线资源站 | 手机看片日韩日韩韩 | 午夜影视在线 | 性感美女视频免费网站午夜 | 亚洲地址一地址二地址三 | 一区二区在线欧美日韩中文 | 亚洲女人被黑人巨大进入 | 网友自拍区一区二区三区 | 色综合色 | 天堂网在线资源www最新版 | 青青青国产免费全部免费观看 | 日韩黄色一级 | 亚洲六月丁香六月婷婷蜜芽 | 亚洲ay| 亚洲 欧美 中文 日韩专区 | 尹人久久久香蕉精品 | 伊人影院在线观看 | 四虎影视成人永久在线播放 | 日韩精品欧美高清区 | 最新国产福利片在线观看 | 午夜视频hd| 午夜免费在线观看 |