1. 程式人生 > >【MySQL】MySQL與IO

【MySQL】MySQL與IO

    innodb_buffer_pool_size
    該引數控制innodb 快取大小,用於快取應用訪問的資料,推薦配置為系統可用記憶體的80%。
    binlog_cache_size
    該引數控制二進位制日誌緩衝大小,當事務還沒有提交時,事務日誌存放於cache,當遇到大事務cache不夠用的時,mysql會把uncommitted的部分寫入臨時檔案,等到committed的時候才會寫入正式的持久化日誌檔案。
    innodb_max_dirty_pages_pct
    該引數可以直接控制Dirty Page在BP中所佔的比率,當dirty page 達到了該引數的閾值,就會觸發MySQL 系統重新整理資料到磁碟


    innodb_flush_log_at_trx_commit
    該引數確定日誌檔案何時write、flush。
為0,log buffer將每秒一次地寫入log file中,並且log file的flush(刷到磁碟)操作同時進行.該模式下,在事務提交的時候,不會主動觸發寫入磁碟的操作。
為1,每次事務提交時MySQL都會把log buffer的資料寫入log file,並且flush(刷到磁碟)中去.
為2,每次事務提交時MySQL都會把log buffer的資料寫入log file.但是flush(刷到磁碟)操作並不會同時進行。該模式下,MySQL會每秒執行一次 flush(刷到磁碟)操作。

注意:
  由於程序排程策略問題,這個“每秒執行一次 flush(刷到磁碟)操作”並不是保證100%的“每秒”。
    sync_binlog
    sync_binlog 的預設值是0,像作業系統刷其他檔案的機制一樣,MySQL不會同步到磁碟中去而是依賴作業系統來重新整理binary log。
當sync_binlog =N (N>0) ,MySQL 在每寫 N次 二進位制日誌binary log時,會使用fdatasync()函式將它的寫二進位制日誌binary log同步到磁碟中去。
   innodb_flush_method
   該引數控制日誌或資料檔案如何write、flush。可選的值為 fsync, o_dsync ,o_direct,littlesync,nosync

  fdatasync 模式:寫資料時,write這一步並不需要真正寫到磁碟才算完成(可能寫入到作業系統buffer中就會返回完成),真正完成是flush操作,buffer交給作業系統去flush,並且檔案的元資料資訊也都需要更新到磁碟。
  O_DSYNC 模式:寫日誌操作是在write這步完成,而資料檔案的寫入是在flush這步通過fsync完成
  O_DIRECT模式:資料檔案的寫入操作是直接從mysql innodb buffer到磁碟的,並不用通過作業系統的緩衝,而真正的完成也是在flush這步,日誌還是要經過OS緩衝
  注意:關於mysql 和io相關的引數,並不是一成不變的,需要根據自身業務系統和硬體系統做相應調整,系統上線之前,測試出一個最佳值。

相關推薦

MySQLMySQLIO

    innodb_buffer_pool_size    該引數控制innodb 快取大小,用於快取應用訪問的資料,推薦配置為系統可用記憶體的80%。    binlog_cache_size    該引數控制二進位制日誌緩衝大小,當事務還沒有提交時,事務日誌存放於cache,當遇到大事務cache不夠

MySQLMySQL的併發控制加鎖分析

https://www.cnblogs.com/yelbosh/p/5813865.html  本文主要是針對MySQL/InnoDB的併發控制和加鎖技術做一個比較深入的剖析,並且對其中涉及到的重要的概念,如多版本併發控制(MVCC),髒讀(dirty read),幻讀(phantom read

MySQLMySQL的安裝配置

目錄 2.1.2  配置MySQL 5.6 MySQL安裝完畢之後,需要對伺服器進行配置,使用圖形化的配置工具MySQLInstanceConfig.exe。按照前面一節介紹的方法,啟動MySQL Instance Configuratio

mysqlmysql concat函式SQL注入

     例如:原本查詢語句是 select username,email,content from test_table where user_id=uid;其中uid,是使用者輸入的。正常顯示結果會出現使用者名稱,使用者郵箱,使用者留言內容。但是如果uid過濾不嚴,我們可以構造如下SQL語句來獲得任意資

MySql 備份還原

常用 ===================================================================================  備份mysqldump -h127.0.0.1 -uroot -ppass --databases

JavaMySQLStringjava.sql.Date、java.sql.Timestap的轉化

/** * String轉換為java.sql.Date * * @param strDate * @return */ public stat

mysqlmysql中left join使用on where篩選的差異

 資料表A與資料表B中資料如下:  語句一: Sql程式碼   select  A.ID as AID, B.ID as BID   from A left join B on A.ID =

MySQLMySQL伺服器客戶端的區別

關於MySQL伺服器和客戶端的區別一直沒有深究,今天突然想弄明白怎麼回事,其實也挺簡單的...現在記錄下 簡單地說,資料庫功能有兩種:“資料維護”、“資料訪問”。細一點地說,“維護”包括資料庫許可權、

MySQL的零距離接觸》第三章:約束以及修改資料表 (3-7:MySQL 修改資料表–刪除約束)

3-7:MySQL 修改資料表–刪除約束 一. 前言 上一節最後我們講到了刪除預設約束,本節我們來講解刪除主鍵約束和唯一約束以及外來鍵約束 二. 刪除主鍵約束 刪除主鍵約束的語法結構: ALTER TABLE tbl_name DROP PRI

MYSQL-CLUSTER-7.5搭建數據庫集群

安裝教程 讀寫 固定 現在 note res 順序 遠程訪問 關閉 閱讀目錄 前言 mysql cluster中的幾個概念解釋 架構圖及說明 下載mysql cluster 安裝mysql cluster之前 安裝配置管理節點 安裝配置數據和mysql節點

轉載MySQL事務以及SELECT ... FOR UPDATE的使用

商品 tail ase -a base 我們 evel erl tel MySQL中的事務,默認是自動提交的,即autocommit = 1; 但是這樣的話,在某些情形中就會出現問題:比如: 如果你想一次性插入了1000條數據,mysql會commit1000次的, 如果我

mysql執行計劃介紹

sta 備註 dex 統計信息 行數 temp 方式 否則 獲取 原文地址:http://www.jb51.net/article/43306.htm 1.查看mysql執行計劃 explain SELECT * from shippingorder where

故障MySQL主從同步故障-Slave_SQL_Running: No

ack counter stop usr mysql-bin back data 連接 xid 轉自:http://www.linuxidc.com/Linux/2014-02/96945.htm 故障現象:進入slave服務器,運行:mysql> show slav

筆記mysql入門語句8條

oot rom mysql入門 -h 添加 values arc trunc gdb 1、連接到數據庫服務器 mysql -h host -uroot -pXXXX 2、查看所有庫 show databases; 3、選庫 use 庫名 4、查看庫下面的表 show tab

MySQL中,字符串和數值的比較

【坑】 mysql中 字符串和數值的比較 官方文檔:https://dev.mysql.com/doc/refman/5.7/en/comparison-operators.html原文:Comparison operations result in a value of 1 (TRUE), 0 (F

mysql的SQL_NO_CACHE(在查詢時不使用緩存)和sql_cache用法

his let 作用 upd 做了 ble effect table mea 轉自:http://www.169it.com/article/5994930453423417575.html 為了測試sql語句的效率,有時候要不用緩存來查詢。 使用 SELECT SQL

mysqlmysql 配置

mark mysql gen engine fault my.cnf def class ner 安裝完mysql後, 要及得配置一下 /etc/mysql/my.cnf 配置字符編碼為utf8 [client] default-character-set = utf8

MySqlmysql-5.7.20-winx64安裝配置

查詢 rac ces sql_mode mysql啟動 str -i 版本 image 序:   MySQL在Windows系統上的安裝配置問題。 0x01:   去MySQL的官網下載想要版本的MySQL免安裝文件。https://dev.mysql.com/do

SphinxMySQL+Sphinx 全文檢索的使用和測試

sphinx mysql 增量更新索引文 導讀:最近在線上由於某些不可名狀的原因需要在數據庫中過濾一些詞語,所以線上比較多的語句都是 select c1,c2 fron tb1 where c1 like '%name%'類似與這個樣子的模糊查詢。開始想到了全文索引來進行分詞,但是又想到

20180105mysql日常優化一則

ati 添加 http desc clas ima 不知道 gen 1.5 導讀:在日常的MySQL的SQL語句優化工作中,總會遇到了各種各樣的問題。今天就是遇到了一個比較詭異的問題,在這裏記錄下來方便自己的記憶。 MySQL版本信息: MySQL 5.6.3