mysql并發控制

并發控制:

鎖:Lock

1、鎖類型 :

讀鎖:共享鎖,可被多個讀操作共享;
寫鎖:排它鎖,獨占鎖;

2、鎖粒度:

表鎖:在表級別施加鎖,并發性較低;
行鎖:在行級另施加鎖,并發性較高;

3、鎖策略:在鎖粒度及數據安全性之間尋求一種平衡機制;

存儲引擎:級別以及何時施加或釋放鎖由存儲引擎自行決定;
MySQL Server:表級別,可自行決定,也允許顯式請求; 

4、鎖類別:

顯式鎖:用戶手動請求的鎖;
隱式鎖:存儲引擎自行根據需要施加的鎖;

5、顯式鎖的使用:

(1) LOCK TABLES 

    LOCK TABLES  tbl_name  read|write, tbl_name read|write, ...

    UNLOCK TABLES; #釋放鎖

mysql并發控制

mysql并發控制

如果是寫鎖就任何鎖都被阻塞

(2) FLUSH TABLES:內存中的數據同步內存到磁盤上,并關閉表,或者施加鎖之后打開
    FLUSH TABLES tbl_name,... [WITH READ LOCK];

    UNLOCK TABLES;

    可以直接  FLUSH TABLES WITH 。。。 LOCK
        同步所有的表,并施加鎖

(3) SELECT cluase :鎖定某些行
    [FOR UPDATE | LOCK IN SHARE MODE                

事務:

事務:一組原子性的SQL查詢、或者是一個或多個SQL語句組成的獨立工作單元;

事務日志:

innodb_log_files_in_group
innodb_log_group_home_dir
innodb_log_file_size    
innodb_mirrored_log_groups

mysql并發控制

ACID測試:

A:AUTOMICITY,原子性;整個事務中的所有操作要么全部成功執行,要么全部失敗后回滾;
C:CONSISTENCY,一至性;數據庫總是應該從一個一致性狀態轉為另一個一致性狀態; 
I:ISOLATION,隔離性;一個事務所做出的操作在提交之前,是否能為其它事務可見;出于保證并發操作之目的,隔離有多種級別; 
D:DURABILITY,持久性;事務一旦提交,其所做出的修改會永久保存;

自動提交:單語句事務

mysql> SELECT @@autocommit;

+------------------------+
| @@autocommit |
+------------------------+
|            1               |
+------------------------+

mysql> SET @@session.autocommit=0;

手動控制事務:

  • 啟動START TRANSACTION
  • 提交COMMIT
  • 回滾ROLLBACK

這種事物的回滾等操作需要存儲,就需要事務的支持

事務支持savepoints:

SAVEPOINT identifier

ROLLBACK [WORK] TO [SAVEPOINT] identifier

RELEASE SAVEPOINT identifier        

事務日志

事務日志就是把隨機IO轉換成一次大量讀寫的操作,即把所有的操作存儲在連續的空間中,當我們提交時就要保證所有的執行操作都存儲在事務日志文件中了,然后再通過mysql的線程默認同步到數據區去。
所以我們一般不要讓事務日志和數據存儲在同一個磁盤中。
事務日志是由兩個以上文件輪替使用,當第一個被填滿,就換上另一個。然后同步第一個。mysql支持事務日志的鏡像!

事務日志所在文件 /var/lib/mysql/

-rw-rw---- 1 mysql mysql 5.0M Nov 13 07:07 ib_logfile0
-rw-rw---- 1 mysql mysql 5.0M Nov 13 07:07 ib_logfile1

和事務相關的配置

事務隔離級別:

READ-UNCOMMITTED:讀未提交 --> 臟讀;
READ-COMMITTED:讀提交--> 不可重復讀;
REPEATABLE-READ:可重復讀 --> 幻讀;
SERIALIZABLE:串行化;

mysql> SELECT @@session.tx_isolation;
        +----------------------------------+
        | @@session.tx_isolation |
        +----------------------------------+
        | REPEATABLE-READ         |
        +----------------------------------+

    查看InnoDB存儲引擎的狀態信息:
        SHOW ENGINE innodb STATUS; 

原創文章,作者:qzx,如若轉載,請注明出處:http://www.www58058.com/59642

(0)
qzxqzx
上一篇 2016-11-18 19:19
下一篇 2016-11-18 19:25

相關推薦

  • DNS服務器—-主從服務器搭建

    一、環境準備   1、準備三臺測試       主DNS服務器地址:192.168.10.203       從DNS服務器地址:192.168.10.103       測試主機地址:  192.168.10.120 …

    Linux干貨 2015-05-18
  • 馬哥教育網絡班22期+第7周課程練習

    week7: 1、創建一個10G分區,并格式為ext4文件系統;    (1) 要求其block大小為2048, 預留空間百分比為2, 卷標為MYDATA, 默認掛載屬性包含acl;    (2) 掛載至/data/mydata目錄,要求掛載時禁止程…

    Linux干貨 2016-09-26
  • ifcfg, ip, ss,配置文件 (Blog 7)

    Linux主機接入網絡:
    IP/MASK
    GATEWAY
    DNS

    Linux干貨 2017-11-27
  • HA cluster應用—CoroSync+Pacemaker

    HA cluster應用——CoroSync v2 (quorum system)+Pacemaker (standalone daemon)+ crmsh/pcsh corosync簡述: Corosync是OpenAIS發展到Wilson版本后衍生出來的開放性集群引擎工程。可以說Corosync是OpenAIS工程的一部分。OpenAIS從openais…

    2016-11-27
  • vim用法詳解

    vim編輯器:文本編輯器: 文本:純文本,ASCII text;Unicode 文本編輯器種類:     行編輯器:sed     全屏編輯器:nano,vi   vi:visual interface vim:vi improv…

    Linux干貨 2016-08-15
  • 推薦-LVS專題: LVS+Keepalived并使用DNS輪詢實現Director的高可用和負載均衡

    LVS專題: LVS+Keepalived并使用DNS輪詢實現Director的高可用和負載均衡 前言 什么是KeepAlived 實驗介紹 實驗拓撲 實驗環境 實驗步驟 配置KeepAlived(1) 實現Director 的VIP互為主從 測試 配置LVS 配置KeepAlived(2) 測試LVS 配置RS的IP和web服務 配置DNS 最終測試 總結…

    Linux干貨 2016-04-09
欧美性久久久久