數據庫的隔離級別和索引使用

先看一下隔離級別, 隔離級別首先要明確 ,隔離的越重,那么自然會失去效率,為什么有這么多的隔離級別,其實就是平衡業務關系盡可能的提高效率。

下面看下隔離級別和介紹:

讀未提交是指:一個事務還沒提交時,它做的變更就能被別的事務看到。

讀提交是指:一個事務提交之后,它做的變更才會被其他事務看到。

可重復讀是指:一個事務執行過程中看到的數據,總是跟這個事務在啟動時看到的數據是一致的。當然在可重復讀隔離級別下,未提交變更對其他事務也是不可見的。

串行化:顧名思義是對于同一行記錄,“寫”會加“寫鎖”,“讀”會加“讀鎖”。當出現讀寫鎖沖突的時候,后訪問的事務必須等前一個事務執行完成,才能繼續執行。其中“讀提交”和“可重復讀”比較難理解,所以我用一個例子說明這幾種隔離級別。假設數據表 T 中只有一列,其中一行的值為 1,下面是按照時間順序執行兩個事務的行為

假如 mysql 修改(update) age?這個這個字段 ,由age 36 修改為 18

首先1.啟動事物?2,修改值 ?3?commit(提交事物 )整個過程結束。

那么當另外一個事物正好訪問age 這個修改的字段是 改怎么處理呢。

讀提交 :必須等修改的事物 commit 提交之后才能訪問,也就是 在沒有修改事物提交之前還是訪問的36?

讀未提交: 表示 我可以等你不提交,就能讀到數據,那么這個時候讀到的數據就是18 (雖然修改事物沒有提交)

可重復讀,表示 我這個讀事物前后一致,也就是說我讀事物在沒有提交之前 讀到什么數據 就一直是什么數據,(讀事物沒有commit之前)

串行化: 當一個事物會加鎖,執行完之后 另外一個事物才能執行。當 查詢事物commit 之后 修改事物才能執行,或者當修改事物commit 之后 查詢事物才能執行。

再說一下索引:

mysql 數據庫大部分用的是innoDB,見索引要注意回表問題。

先說一下回表, innoDB采用B+樹的方式,它分為主鍵索引(聚簇索引),業務類索引(非聚簇索引),當我們查詢一個字段的時候,mysql 會返回主鍵 然后 再把數據返回,

比如 * where age =18 他會先用age 這個業務索引找到 主鍵id ?然后用主鍵id 取找出所有查詢的數據 這個過程叫回表。

你的 索引設計 如果設計不當很可能會增加 回表的次數 從而影響 查詢效率

舉例說一下:比如查詢?where age =18 and sex =‘男’ ?你的索引 age 但是sex 沒有,

這樣的話 按照最左匹配原則,age 是會走索引的,但是sex 沒有索引 ?,這樣就是增加一次回表,即先通過age 查詢id 然后 用id 找出數據 看看sex是否符合。

但是如果你 (age, sex) 這樣做聯合索引 按照 最左匹配原則 你age 首先說可以使用,那么 你在使用查詢語句的where age =18 and sex =‘男’ ? 時候,減少了一次回表 ?(這叫索引下推)

拿怎么設計呢,比如你的業務需求中 關于年齡和性別這兩個是高頻查詢次數,那么就直接設計聯合索引,這樣還能減少單獨設計age 這個索引(索引最左原則)

?

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

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

相關文章

Oracle SQL詳解

Oracle SQL是一種用于管理和操作Oracle數據庫的編程語言。以下是一些基本的Oracle SQL語法和建表建用戶的詳解。 創建用戶 在Oracle中,創建用戶通常需要具有足夠權限的用戶(通常是具有DBA角色的用戶)。以下是一個創建用戶的例子:…

基于詞頻統計的聚類算法(kmeans)

基于詞頻統計的聚類算法(kmeans) 數據集是三個政府報告文件,這里就不做詳細描述了,就是簡單的txt文件。 實驗過程主要分為如下幾步: 1.讀取數據并進行停用詞過濾 2.統計詞頻 3.基于三篇文章詞頻統計的層次聚類 4.基于…

廢品回收小程序怎么做?有哪些核心功能?

廢品回收行業正逐步走向高質量發展的道路。在國家政策的推動下,再生資源市場需求旺盛,行業內部競爭格局逐漸明朗。 隨著互聯網技術的發展,"互聯網回收"成為廢品回收行業的一個新趨勢。通過微信小程序這種線上平臺,用戶…

數據可視化在智慧園區中的核心價值解析

數據可視化在智慧園區中發揮著至關重要的價值。智慧園區是一種基于物聯網、大數據、云計算等先進技術的現代化管理模式,旨在通過智能化手段提升園區的管理效率、服務水平和用戶體驗。而數據可視化作為數據處理和展示的重要工具,正是智慧園區實現這些目標…

BUG: VS Code C++輸出中文亂碼

BUG: VS Code C輸出中文亂碼 環境 Windows 11 VS Code 編輯器詳情 在Windows 使用 cout 函數輸出中文時出現亂碼 問題的原因在cmd的顯示編碼和c程序編碼的不同。cmd默認的是gbk編碼,而VS Code 軟件的CMD終端默認是utf-8編碼,因而在輸出中文文本時會出…

Flutter 中的 SliverCrossAxisExpanded 小部件:全面指南

Flutter 中的 SliverCrossAxisExpanded 小部件:全面指南 Flutter 是一個由 Google 開發的跨平臺 UI 框架,它允許開發者使用 Dart 語言來構建高性能、美觀的移動、Web 和桌面應用。在 Flutter 的豐富組件庫中,SliverCrossAxisExpanded 是一個…

Ubuntu server 24 安裝配置 snort3 3.2.1.0 網絡入侵檢測防御系統 配置注冊規則集

一 下載并安裝源代碼 地址:https://github.com/snort3/snort3/releases #下載,解壓 wget https://github.com/snort3/snort3/archive/refs/tags/3.2.1.0.tar.gz tar zxvf 3.2.1.0.tar.gz 二 安裝軟件依賴包 1 安裝依賴包 sudo apt update sudo apt install…

Bytebase 2.18.0 - 支持創建用戶組

🚀 新功能 支持創建用戶組。支持 BigQuery。支持 SQL Server 庫表同步。支持 MongoDB 集群并支持直接連接到集群中的節點。支持 SQL Server 和 Oracle 顯示工單任務執行日志,如影響行數或錯誤。添加 SQL 審核規則: 禁止在 SQL Server 中進行跨庫查詢。禁…

代碼隨想錄算法訓練營第四十四天 | 01背包問題 二維、 01背包問題 一維、416. 分割等和子集

01背包問題 二維 代碼隨想錄 視頻講解:帶你學透0-1背包問題!| 關于背包問題,你不清楚的地方,這里都講了!| 動態規劃經典問題 | 數據結構與算法_嗶哩嗶哩_bilibili 1.dp數組定義 dp[i][j] 下標為[0,i]之間的物品&…

【C#】類和對象的區別

1.區別概述 結構體和類的最大區別是在存儲空間上,前者是值類型,后者是引用類型,它們在賦值上有很大的區別,在類中指向同一塊空間的兩個類的值會隨一個類的改變而改變另一個,請看如下代碼所示: namespace …

【漯河市人才交流中心_登錄安全分析報告-Ajax泄漏滑動距離導致安全隱患】

前言 由于網站注冊入口容易被黑客攻擊,存在如下安全問題: 暴力破解密碼,造成用戶信息泄露短信盜刷的安全問題,影響業務及導致用戶投訴帶來經濟損失,尤其是后付費客戶,風險巨大,造成虧損無底洞…

JavaSE:異常

1、什么是異常 在生活當中,不管是人還是動物又或是植物,都會生病;在程序中也是,作為程序猿,雖然我們會盡力將程序寫的完美,可難免會出現一些問題~ 在程序執行過程中,發生的一些不正常行為&…

Windows系統安裝openvino(2024.1.0)

一、openvino下載: 下載地址:下載英特爾發行版 OpenVINO 工具套件 (intel.cn) 下載完之后將壓縮包解壓,然后重命名文件夾為openvino_2024.1.0。 二、環境配置 以python環境為例:(建議使用moniconda虛擬環境來安裝&am…

Android 圖表開發開源庫 MPAndroidChart 使用總結

1. 引言 電視項目中需要一個折線圖表示節電數據變化情況,類比 H5 來說,Android 中也應該有比較成熟的控件,經過調研后,發現 MPAndroidChart 功能比較強大,網上也有人說可能是目前 Android 開發最好用的一個三方庫了&a…

【力扣】LCR 130. 衣櫥整理

一、題目描述 二、算法思路 這是?道非常典型的「搜索」類問題。 我們可以通過「深搜」或者「寬搜」,從 [0, 0] 點出發,按照題目的要求(選擇 向右移動一格 或 向下移動一格,但不能移動到衣柜之外 )一直往 [m - 1, …

詳解Spring IoCDI(二)

目錄 承接上文:詳解Spring IoC&DI (一) 1.IoC詳解 1.1方法注解Bean 1.2方法注解要配合類注解使用 1.3定義多個對象 1.4重命名Bean 1.5掃描路徑 2.DI詳解 2.1DI與IoC的關系 2.2屬性注入 2.3構造方法注入 2.4Setter注入 2.5 三…

代碼隨想錄算法訓練營第四十五天|1049.最后一塊石頭的重量II、494.目標和、 474.一和零

1049.最后一塊石頭的重量II 文檔講解:代碼隨想錄 題目鏈接:. - 力扣(LeetCode) 本題其實就是盡量讓石頭分成重量相同的兩堆,相撞之后剩下的石頭最小,這樣就化解成01背包問題了。 和昨天講解的416. 分割等和…

visual studio code 全局搜索

VScode寫代碼的時候,會經常性的需要進行查找代碼,那么怎么在Visual Studio Code中進行查找呢,下面就來大家vscode全局搜索的方法。 想要在vscode全局搜索進行全局搜索,使用快捷鍵CTRLSHIFTF即可進行搜索,也可以在左邊…

哪吒監控+cfcdn+ 反代grp端口

哪吒監控cfcdn 反代grp端口 背景: 哪吒監控:感覺VPS線路不穩定,為了打消自己潛意識,希望量化延遲。 cfcdn:隱藏真實站點,保障小雞隱秘安全 反代grpc端口: 反代grpc到支持https(TLS)的端口,這…

Tomcat啟動閃退問題及解決方法

Tomcat啟動閃退問題可能由多種原因引起,以下是一些常見的原因及相應的解決方法,按照清晰的結構進行歸納: 一、環境變量問題 Java環境問題:Tomcat依賴于Java環境,如果JDK未正確安裝或環境變量配置不正確,會…