【MySQL】數據庫——存儲引擎

一、存儲引擎概述

1.概念

  • MySQL中的數據用各種不同的技術存儲在文件中,每一種技術都使用不同的存儲機制、索引技巧、鎖定水平并最終提供不同的功能和能力,這些不同的技術以及配套的功能在MySQL中稱為存儲引擎
  • 存儲引擎是MySQL將數據存儲在文件系統中的存儲方式或者存儲格式
  • 存儲引擎是MySQL數據庫中的組件負責執行實際的數據I/O操作
  • MySQL系統中,存儲引擎工作在文件系統之上,數據庫的數據會先傳到存儲引擎,按照各個存儲引擎的存儲格式,保存到文件系統

MySQL 查詢數據的執行過程:

1、客戶端向 MySQL 服務器發送一條查詢請求,連接器負責處理連接,并進行身份驗證和權限控制。

2、MySQL 先檢查查詢緩存,如果命中緩存,則立刻返回存儲在緩存中的結果;否則使用查詢解析器進行SQL語句解析、預處理,再由優化器生成對應的執行計劃。

3、MySQL根據執行計劃,調用存儲引擎來執行查詢。

4、將結果返回給客戶端,同時緩存查詢結果。?

2.常用的存儲引擎

  • MyISAM:Mysql 5.5之前的默認數據庫引擎,最為常用。擁有較高的插入,查詢速度,但不支持事務
  • InnoDB:事務型速記的首選引擎,支持ACID事務,支持行級鎖定,MySQL5.5成為默認數據庫引擎

二、MyISAM和InnoDB

類型MyISAMInnoDB
事務不支持事務支持事務
外鍵約束不支持外鍵約束支持外鍵約束
鎖定方式只支持表級鎖定支持行級鎖定,全表掃描時會表級鎖定
讀寫性能只支持單獨的查詢與插入,讀寫阻塞讀寫和事務并發能力較好
全文索引支持全文索引支持全文索引(5.5版本以后支持)
硬件硬件資源占用較小緩存能力較好,可以減少磁盤IO的壓力
存儲文件數據文件和索引文件分開存儲,存儲為三個文件(.frm的表結構文件,.MYD的數據文件,.MYI的索引文件)數據文件也是索引文件,存儲成兩個文件(.frm的表結構文件,.ibd的數據和索引文件)
使用場景使用場景:使用不需要事務支持,單獨的查詢和插入的業務場景使用場景:使用于需要事務支持,一致性要求比較高,數據會頻繁更新,讀寫并發高的業務場景;

三、MySQL儲存引擎的管理

1.查看表使用的存儲引擎

use 庫名;
show create table 表名;show table status [from 庫名] where name='表名'\G;

2.查看系統支持的存儲引擎

show engines;

3.修改表默認存儲引擎

vim /etc/my.cnf
[mysqld]
default-storage-engine=innodb/myisamsystemctl restart mysqldmysql -uroot -p密碼create table 表名(字段 數據類型,...);  #創建一個表
show create table 表名;                #查看表結構,儲存引擎

?4.當表已經存在,想要修改其存儲引擎

alter table 表名 engine=innodb/myisam;

5.創建表的時候,直接指定存儲引擎

create table 表名 (字段 數據類型,...) engine=innodb/myisam; 
#創建表時指定engine為innoDB

四、死鎖:

定義:死鎖是指兩個或多個事務在同一個資源上相互占用,并請求對方鎖定的資源,從而導致相互阻塞的現象。

如何避免死鎖?
1)設置事務的鎖等待超時時間 innodb_lock_wait_timeout
2)設置開啟死鎖檢測功能 innodb_deadlock_detect

show VARIABLES like  'innodb_deadlock_detect';       #查看當前死鎖檢測是否開啟set global innodb_deadlock_detect = ON;              #ON為開啟死鎖檢測,OFF為關閉


3)為表建立合理的索引,減少表鎖發生的概率
4)如果業務允許,可以降低隔離級別,比如選用 提交讀 Read Committed 隔離級別,從而避免間隙鎖導致死鎖
5)建議開發人員盡量使用更合理的業務邏輯,比如多表操作時以固定順序訪問表,盡量避免同時鎖定多個資源
6)建議開發人員盡量保持事務簡短,減少對資源的占用時間和占用范圍
7)建議開發人員在讀多血少的場景下采用樂觀鎖機制

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

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

相關文章

會聲會影2024永久激活碼序列號注冊機分享

大家好呀,今天我想給大家安利一款我最近超級喜歡的軟件——會聲會影2024!🌟 作為一個視頻編輯愛好者,我嘗試過很多視頻編輯軟件,但總感覺少了那么一點點“火花”。直到我遇到了會聲會影2024,它完全改變了我…

環境科學SCI期刊,IF=3+,易錄用,幾乎不退稿

一、期刊名稱 International Journal of Environmental Science and Technology 二、期刊簡介概況 期刊類型:SCI 學科領域:環境科學 影響因子:3.1 中科院分區:4區 三、期刊簡介 International Journal of Environmental Sci…

C++_STL---string類

前言 說起string類,首先需要了解的是 - string類是什么? std::string是類模板std::basic_string的一個元素類型為char的實例化,而basic_string則是對元素指針的封裝。由于basic_string的實現對字符串操作進行了優化,所以它不能用…

深入理解計算機系統 CSAPP 家庭作業6.45

CS:APP3e, Bryant and OHallaron 可以參考這里 void bijk(array A, array B, array C, int n, int bsize) {int i, j, k, kk, jj;double sum;int en bsize*(n/bsize);for (i 0; i < n; i)for (j 0; j < n; j)C[i][j] 0.0;for (kk 0; kk < en; kk bsize) {for (j…

QT拖放事件之八:通過全局剪切板中的接口QClipboard::mimeData()來獲取MIME類型數據

1、演示效果 首先向剪切板寫入數據,然后點擊paste按鈕進行從全局剪切板中 獲取 MIME數據。。。 2、核心代碼 void Widget::on_pasteBtn_clicked() {const QClipboard* clipBoard = QGuiApplication::clipboard()

前端路由中的meta、matched是什么?有哪些作用?

在前端路由中&#xff0c;尤其是在 Vue.js 這樣的框架中&#xff0c;meta 和 matched 是兩個常見的概念&#xff0c;它們提供了關于路由的額外信息和上下文 1. meta 一個可以附加到 Vue Router 路由定義上的自定義字段 它通常用于存儲一些與路由相關的元數據或信息&#xff0…

算法07 深度優先搜索及相關問題詳解

深搜與廣搜是搜索算法中最常用的兩種算法&#xff0c;通過深度優先搜索解決問題還會用到回溯和剪枝&#xff0c;讓我們一起進入本章&#xff0c;了解深搜的基本概念和模板&#xff0c;并學會解決一些常見問題。 目錄 問題導入 走迷宮問題 如何走&#xff1f; 問題建模 如何…

python ----- xml 命名空間與xpath詳解

一、簡介 本文章以如下xml 樣例進行講解命名空間和xpath xml_text"""<?xml version"1.0"?><actors xmlns:fictional"http://characters.example.com"xmlns"http://people.example.com"><actor><name>…

SpringBean的管理

一、bean的名字與標識符 <bean id"" class""></bean> bean的名字作用: 獲取這個bean通過bean名字獲取 bean名字配置方式: id: 唯一標志符, 命名規范與變量命名規范一樣, 包含特殊符號name: 配置名字: 可以包含特殊符號,沒有要求, 比如. 一…

基于支持向量機的垃圾郵件分類,使用SVM+flask+vue

sms-classify 基于支持向量機的垃圾郵件分類&#xff0c;使用SVMflaskvue 數據集和源碼地址 數據集 SMS Spam Collection Data Set 來源于 UCI。樣例被分為非垃圾郵件&#xff08;86.6%&#xff09;和垃圾郵件&#xff08;13.4%&#xff09;&#xff0c;數據格式如下&#xff…

網絡爬蟲中Xpath的使用方法

正則表達式雖然可以處理包含了諸如 HTML 或 XML 內容的字符串&#xff0c;但只能根據文本的 特征匹配字符串&#xff0c;而忽略字符串所包含的內容的真實格式。為了解決這個問題&#xff0c;Python 引入 XPath 以及支持 XPath 的第三方庫 lxml&#xff0c;專門對 XML 或 HTML 格…

git 合并master到分支

master分支的代碼領先自己的分支,git 如何把master分支代碼合并到自己的分支 1.首先切換到主分支 git checkout master 2.使用git pull 把領先的主分支代碼pull下來 git pull 3.切換到自己的分支 git checkout xxx(自己的分支) 4.把主分支的代碼merge到自己的分支 git merge ma…

minio+tusd+uppy搭建文件上傳服務

1、docker部署minio、tusd服務 1.1 新建docker-compose.yml minio API: http://ip:9100 minio控制臺: http://ip:9101 tus API: http://ip:9102/files/ tus webhooh: http:172.0.0.1:3000/files/webhooh(用戶鑒權API) version: 3.7services:minio:image: minio/minio:RELEAS…

亞馬遜運營專詞(一)

許多新入駐亞馬遜的大陸賣家&#xff0c;對亞馬遜的專業詞匯還不太了解&#xff0c;導致在運營店鋪的過程出現一些問題&#xff0c;今天就來講解一下亞馬遜常用的運營專詞&#xff0c;方便新手賣家深入了解。 1. Listing&#xff1a;亞馬遜listing指的是產品的詳情頁面&#xf…

通過BLE實現類似UART的串行通信:NUS服務 vs GATT服務

在物聯網和智能設備的發展中&#xff0c;藍牙低功耗&#xff08;Bluetooth Low Energy, BLE&#xff09;技術已經成為無線數據傳輸的重要手段。本文將介紹通過BLE實現類似UART的串行通信&#xff0c;并對比NUS服務和GATT服務的使用場景&#xff0c;幫助開發者更好地選擇適合的技…

2024越南醫藥、制藥機械展

2024年越南國際醫藥&#xff0c;制藥裝備及技術展覽會 時間&#xff1a; 2024年11月21--23日 地點&#xff1a;越南胡志明市-西貢會展中心SECC 2024年越南國際醫藥&#xff0c;制藥裝備及技術展覽會將于2024年11月21-23日在越南胡志明市盛大舉行&#xff01;展覽會以國際化、專…

【Feature Pyramid Networks for Object Detection】

Feature Pyramid Networks for Object Detection 摘要引言2 相關工作3 FPN4 應用摘要 特征金字塔是識別系統中用于檢測不同尺度對象的基本組件。但是,最近的深度學習對象檢測器已經避免了金字塔表示,部分原因是它們在計算和內存方面都很密集。在這篇論文中,我們利用深度卷積…

LeetCode經典題之876、143 題解及延伸

系列目錄 88.合并兩個有序數組 52.螺旋數組 567.字符串的排列 643.子數組最大平均數 150.逆波蘭表達式 61.旋轉鏈表 160.相交鏈表 83.刪除排序鏈表中的重復元素 389.找不同 1491.去掉最低工資和最高工資后的工資平均值 896.單調序列 206.反轉鏈表 92.反轉鏈表II 141.環形鏈表 …

paddleocr查看標注好的數據錯誤信息

字符計數 import os import json from collections import Counter# 按字符計數 label_dir"/Users/thy/Downloads/chinese20240613" zi_ls[] with open(os.path.join(label_dir,"Label.txt")) as f:linesf.readlines()for line in lines:line line.strip…

Java面試題:聚簇索引和非聚簇索引

聚簇索引和非聚簇索引 聚簇索引(聚集索引) 將數據的存儲和索引放在一塊,索引結構的葉子節點保存了行數據 索引字段必須存在,且只能存在一個 非聚集索引(二級索引) 將數據和索引分開存儲,索引結構的葉子節點關聯的是對應的主鍵 索引字段可以存在多個 索引的選取規則 如果…