MySQL從入門到高級 --- 12.事務 13.鎖機制 14.日志

文章目錄

    • 第十二章 && 第十三章 && 第十四章:
      • 12.事務
        • 12.1 特性
        • 12.2 隔離級別
      • 13.鎖機制
        • 13.1 各存儲引擎對鎖的支持狀況:
        • 13.2 鎖特性
        • 13.3 MyISAM表鎖
          • 13.3.1 加表鎖
        • 13.4 InnoDB行鎖
          • 13.4.1 行鎖特點
          • 13.4.2 行鎖模式
      • 14.日志
        • 14.1 錯誤日志
        • 14.2 二進制日志
          • 14.2.1 日志格式
        • 14.3 查詢日志
        • 14.4 慢查詢日志

第十二章 && 第十三章 && 第十四章:

12.事務

  • 可用來維護數據庫的完整性,保證成批的SQL語句要么全部執行,要么都不執行

  • 事務用來管理DDL 、DML 、DCL操作,如insert、update、delete語句,默認自動提交

  • MySQL中事務由存儲引擎實現,在MySQL只有InnoDB存儲引擎才支持事務

操作

  1. 開啟事務:BEGIN或START TRANSACTION,任何一條DML語句執行,標志著事務的開啟

  2. 提交事務:COMMIT TRANSACTION,成功的結束,將所有DML語句操作歷史記錄和底層硬盤數據來一次同步

  3. 回滾事務:ROLLBACK TRANSACTION,失敗的結束,將所有DML語句操作歷史記錄全部清空

改變MySQL自動提交模式

語法:set autocommit=0 – 禁止自動提交

        set autocommit=1 -- 開啟自動提交

在這里插入圖片描述

12.1 特性
  • 原子性

  • 一致性

  • 隔離性

  • 持久性

12.2 隔離級別

隔離:將事務與另一個事務隔離開

作用:一個事務正在操作的數據被另一事務修改或刪除,最后執行結果可能無法達到預期。如果沒有隔離性還會導致其他的問題。

  • 讀未提交(read uncommitted):一個事務可以讀取到另一個未提交事務的數據,最低級別,任何情況都無法保證,會造成臟讀。

  • 讀已提交(committed):一個事務要等另一個事務提交后才能讀取數據,可避免到臟讀的發生,會造成不可重復讀。

  • 可重復讀(repeatable read):在開始讀取數據時,不再允許修改操作,可避免臟讀、不可重復值的發生,會造成幻讀。

  • 串行化(erializable):最高的事務隔離級別,在該級別下,事務串行化順序執行,可避免臟讀、不可重復讀和幻讀。但該隔離級別效率低,耗數據庫性能,一般不用。

MySQL默認隔離級別是可重復讀。

事務隔離級別臟讀不可重復讀幻讀
讀未提交
讀已提交
可重復讀
串行化

在這里插入圖片描述

13.鎖機制

鎖是計算機協調多個進程或線程并發訪問某一資源的機制

鎖沖突也是影響數據庫并發訪問性能的一個重要因素

按數據操作的粒度分類:

  • 表鎖:操作時,會鎖定整個表

  • 行鎖:操作時,會鎖定當前操作行

按數據操作的類型分類:

讀鎖 (共享鎖) :針對同一份數據,多個讀操作可同時進行而不會互相影響

寫鎖 (排它鎖) :當前操作沒完成前,它會阻斷其他寫鎖和讀鎖

13.1 各存儲引擎對鎖的支持狀況:
存儲引擎表級鎖行級鎖
MyISAM支持不支持
InnoDB支持支持
MEMORY支持不支持
BDB支持不支持
13.2 鎖特性
鎖類型特性
表級鎖偏向MyISAM存儲引擎,開銷小,加鎖快,不會出現死鎖;鎖定粒度最大,發生鎖沖突的概率最高,并發度最低
行級鎖偏向InnoDB存儲引擎,開銷大,加鎖慢,會出現死鎖;鎖定粒度最小,發生鎖沖突的概率最低,并發度最高
  • 表級鎖適用于以查詢為主,只有少量按索引條件更新數據的應用

  • 行級鎖適用于有大量按索引條件并發跟新少量不同數據,同時又有并查詢的應用

13.3 MyISAM表鎖
13.3.1 加表鎖
  • MyISAM在執行查詢語句前,會自動給涉及的所有表加讀鎖,在執行更新操作前,會自動給涉及的表加寫鎖
lock table table_name read;  -- 加讀鎖lock table table_name write; -- 加寫鎖
13.4 InnoDB行鎖
13.4.1 行鎖特點
  • 偏向InnoDB存儲引擎,開銷大,加鎖慢,會出現死鎖;鎖定粒度最小,發生鎖沖突的概率最低,并發度最高

InnoDB與MyISAM最大不同的兩點:

  1. 支持事務

  2. 采用行級鎖

兩種類型行鎖

  • 共享鎖 (S) :又稱讀鎖,簡稱S鎖,共享鎖就是多個事務對于同一數據可共享一把鎖,都能訪問數據,但只能讀不能修改

  • 排他鎖 (X) :又稱寫鎖,簡稱X鎖,排他鎖就是不能與其他鎖并存

對于UPDATE、DELETE和INSERT語句,InnoDB會自動給涉及數據集加排他鎖;對于普通SELECT語句,InnoDB不會加任何鎖

13.4.2 行鎖模式
SELECT * FROM table_name WHERE ... LOCK IN SHARE MODE -- 共享
SELECT * FROM table_name WHERE ... FOR UPDATE -- 排他鎖
  • 顯示給記錄集加共享鎖或排他鎖

14.日志

作用:記錄著數據庫工作的方方面面,幫助數據庫管理員追蹤數據庫曾經發生過的各種事件

分類

  • 錯誤日志

  • 二進制日志

  • 查詢日志

  • 慢查詢日志

14.1 錯誤日志

它記錄了mysqld啟動和停止時,以及服務器在運行過程中發生任何嚴重錯誤時的相關信息

錯誤日志默認開啟,默認存放目錄為mysql的數據目錄,默認日志文件名為hostname.err(hostname 主機名)

語法:show variables like ‘log_error%’;

  • 該指令查看日志位置

在這里插入圖片描述

14.2 二進制日志

它記錄了所有的DDL語句和DML語句,但不包括數據查詢語句,該日志對災難時的數據恢復起著重要作用,MySQL主從復制,就是通過該日志實現

二進制文件,8.0版本默認已開啟,低版本需通過配置文件開啟,并配置MySQL日志的格式

Windows:my.ini Linux:my.cnf

-- 配置開啟binlog日志,日志文件前綴為mysqlbin
log_bin=mysqlbin-- 配置二進制日志的格式
binlog_format=STATEMENT-- 在my.ini文件中進行配置,配置完后需重啟服務
14.2.1 日志格式
  • STATEMENT:記錄的都是SQL語句,每一條對數據進行修改的SQL都會被記錄在日志文件中

  • ROW:記錄的是每一行的數據變更

  • MIXED:STATEMENT和ROW兩種格式的混合

在這里插入圖片描述

14.3 查詢日志

查詢日志中記錄了客戶端的所有操作語句

默認情況下,查詢日志未開啟,若需要開啟,可進行配置

-- 該選項用作開啟查詢日志 1:開啟 0:關閉
general_log=1-- 設置日志的文件名,若沒指定,默認文件名為host_name.log
general_log_file=file_name

在這里插入圖片描述

14.4 慢查詢日志

它記錄了所有執行事件超過參數long_query_time 設置值并且掃描記錄不小于min_examined_row_limit 的所有QL語句的日志。

long_query_time默認為10秒,最小為0,精度可達到微秒

-- 控制慢查詢日志是否開啟 1:開啟 0:關閉
slow_query_log=1-- 指定慢查詢日志的文件名
slow_query_log_file=slow_query.log-- 配置查詢的時間限制,超過該時間將被認定慢查詢,將需要進行日志記錄,默認10秒
long_query_time=10 

在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/22224.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/22224.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/22224.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

深入理解計算機系統 第三版 中文版 圖5-27 p371 錯漏

中文版 英文版 對照 可以看出錯漏 這本書中文版很多錯漏,可以配合英文版查正,不過英文版也很多錯漏,所以不用太相信書本.要根據自己的理解來.

微軟云計算Windows Azure(一)

目錄 一、微軟云計算平臺二、微軟云操作系統Windows Azure(一)Windows Azure概述(二)Windows Azure計算服務(三)Windows Azure存儲服務(四)Windows Azure Connect(五&…

Win 11官宣取消硬件限制,微軟這次徹底服軟了

上市近 3 年,微軟寄予厚望的 Win 11 終究落了個被上代 Win 10 光環狠狠掩埋的結局。 有小伙伴兒認為是 Win 11 本身做的太爛,更新頻繁、BUG 一堆,讓人失去興趣。 也有人認為,系統本身體驗沒啥大毛病,嚴苛的硬件限制才…

數據結構算法-堆排序

堆排序:利用堆的特性進行排序,先將數組轉換為堆對象(最大堆或最小堆),以最大堆為例,每次heapify之后,取出堆頂(索引為0)的元素與最后一個元素交換。以后每次做同樣的事情,只是堆的長…

Golang性能分析工具pprof--遠程分析時無法定位源代碼行數問題解決方案

場景 通過命令行模式的list命令,為了查看指標消耗在具體哪一行,需要源代碼。但實際程序是部署在線上或者程序的源代碼目錄變了,則pprof從默認路徑找不到代碼,無法顯示是哪一行的問題。 通過瀏覽器模式的source頁面,有…

JUC總結3

CAS 簡介 CAS的全稱是“比較并交換”,是一種無鎖的原子操作,其體現了樂觀所的思想,在無鎖的情況下保證線程操作共享數據的原子性。 CAS一共有3個值: 1、V:要更新的值; 2、E:預期值&#xf…

RHCE (Linux進階) Ubuntu 操作系統安裝教程

一、在官網下載iso鏡像文件 下載地址: https://cn.ubuntu.com/download/server/step1#downloads(下載最新的Ubuntu 20.04 LTS服務器版本) 二、VMware安裝配置過程 基本安裝過程 1、新建虛擬機 2、選擇典型即可 3、設置下載好的Ubuntu對應路…

Exception異常機制詳細講解

目錄 一、異常1.1 什么是異常1.2 異常機制的作用1.3 常見的異常2.3 異常的分類1. Error2. Exception① 運行時異常② 編譯期異常總結: 二、異常的處理2.1 拋出異常3.1 拋出異常語法3.2 試圖捕獲異常3.3 捕獲異常與拋出異常的區別1. 拋出異常2.捕獲異常 三、finally四…

Spring Cloud:構建高可用分布式系統的利器

摘要:本文將介紹Spring Cloud,一個基于Spring Boot的開源微服務架構工具集。我們將探討Spring Cloud的核心組件、特性以及如何使用Spring Cloud構建高可用、分布式系統。通過本文,讀者將了解到Spring Cloud在實現微服務架構中的應用和優勢。 …

【Springcloud微服務】MybatisPlus下篇

🔥 本文由 程序喵正在路上 原創,CSDN首發! 💖 系列專欄:Springcloud微服務 🌠 首發時間:2024年6月4日 🦋 歡迎關注🖱點贊👍收藏🌟留言&#x1f43…

24、matlab二維和三維網格(meshgrid函數)以及散點數據插值 griddata()函數

1、二維和三維網格(meshgrid函數) 語法 語法1:[X,Y] = meshgrid(x,y) 基于向量 x 和 y 中包含的坐標返回二維網格坐標。 語法2:[X,Y] = meshgrid(x) 與 [X,Y] = meshgrid(x,x) 相同,并返回網格大小為 length(x)length(x) 的方形網格坐標。 語法3:[X,Y,Z] = meshgrid(x,y,…

汽車銷售門店零售價格違規檢查的實踐經驗方法

隨著汽車市場的蓬勃發展,汽車銷售門店的零售價格合規性日益受到業界和消費者的關注。為確保銷售過程的公平與透明,開展零售價格違規檢查顯得尤為重要。 在這方面,深圳神秘顧客(SMS)公司憑借其深厚的實踐經驗和專業技巧…

弘君資本炒股開戶:如何看待股價波動?

在股票商場上股價的動搖無疑是投資者最為關心的話題之一,面臨股價的起伏不定投資者往往會感到迷茫和焦慮。關于怎么看待股價動搖,弘君資本下面就為大家詳細介紹一下。 股價動搖是股市運行的常態,股市是國民經濟的晴雨表,股票價格…

Flink run 自動化運行任務shell腳本

Linux命令行: sh flink_run.sh test com.dzj.app.base.test.FlinkKafkaOffsetTest /root/soft/test.jar flink_run.sh腳本內容: #!/bin/bash# 檢查參數數量是否正確 if [ "$#" -ne 3 ]; thenecho "錯誤:需要提供 3 個參數&…

SpringBoot+layui實現Excel導入操作

excel導入步驟 第三方插件引入插件 效果圖 (方法1)代碼實現(方法1)Html代碼( 公共)下載導入模板 js實現 (方法1)上傳文件實現 效果圖(方法2)代碼實現&#xf…

多語言大模型 Aya-23 開源!覆蓋23種語言,性能刷新SOTA

文章目錄 1. Aya-23 技術特點1.1 預訓練階段1.2 指令微調階段 2. Aya-23 性能表現3. Aya-23 多語言任務評估4. Aya-23 支持 23 種語言5. Aya-23 應用場景 近年來,多語言大模型(MLLM)發展迅速,但大多數模型的性能依然存在顯著差距&…

“滴滴打車,用友入賬”,YonSuite商旅費控助力企業“降低成本”更進一步

在當今競爭激烈的商業環境中,企業對于成本控制和效率提升的需求日益迫切。特別是在商旅管理方面,如何有效整合資源、優化流程、降低費用,成為了成長型企業關注的焦點。用友YonSuite商旅費控作為用友集團旗下的重要產品,憑借其卓越…

ctfshow pwn17-18

毛坯的人生和精裝的朋友圈 pwn17 while ( 1 ){menu();v4 0;puts("\nEnter the command you want choose:(1.2.3.4 or 5)\n");__isoc99_scanf("%d", &v4);switch ( v4 ){case 1:system("id");break;case 2:puts("Which directory?(/,…

克隆別人的項目并上傳到自己的倉庫

克隆別人的項目并上傳到自己的倉庫通常涉及以下步驟: 克隆項目:首先,你需要將別人的項目克隆到你的本地計算機。可以使用以下Git命令: git clone [項目的URL]將 [項目的URL] 替換為你想克隆的項目的URL。 創建新的倉庫&#xff1…

卡爾曼濾波算法的matlab實現

卡爾曼濾波算法的matlab實現 figure; hold on;Z(1:1:100); %觀測值:第一秒觀測1m 第二秒觀測兩米 勻速運動, 每秒1m, 最后擬合的也是速度 1m/splot(Z); plot([0,100], [1,1]);noiserandn(1,100)*0.5; %生成方差為1的高斯噪聲 ZZnoise; % 加入噪聲plot(Z);X[0;…