MySQL索引 事務 儲存引擎

2021-10-12 16:41:45 字數 4422 閱讀 5690

索引建立的方法

建立索引的原則依據

檢視索引的方法

刪除索引的方法

事務的概念

事務的acid特點

事務控制語句

事務的控制方法

儲存引擎概念介紹

業選擇儲存引擎依據

修改儲存引擎

:no_unique為0

:no_unique為1

:屬於唯一性索引的一種

直接建立索引

修改表結構方式新增索引

建立表結構時建立索引

show

index

from table_name;

show

keys

from table_name ;

mysql>

show

index

frqm player;

mysql>

show

keys

from player;

dropindex index_name on table_name;

alter

table table_name drop

index index_name;

髒讀(讀取未提交資料)

:a事務讀取b事務尚未提交的資料,此時如果b事務發生錯誤並執行回滾操作,那麼a事務讀取到的資料就是髒資料。就好像原本的資料比較乾淨、純粹,此時由於b事務更改了它,這個資料變得不再純粹。這個時候a事務立即讀取了這個髒資料,但事務b良心發現,又用回滾把資料恢復成原來乾淨、純粹的樣子,而事務a卻什麼都不知道,最終結果就是事務a讀取了此次的髒資料,稱為髒讀。

不可重複讀(前後多次讀取,資料內容不一致)

:事務a在執行讀取操作,由整個事務a比較大,前後讀取同一條資料需要經歷很長的時間。而在事務a第一次讀取資料,比如此時讀取了小明的年齡為20歲,事務b執行更改操作,將小明的年齡更改為30歲,此時事務a第二次讀取到小明的年齡時,發現其年齡是30歲,和之前的資料不一樣了,也就是資料不重複了,系統不可以讀取到重複的資料,稱為不可重複讀。

幻讀(前後多次讀取,資料總量不一致)

:事務a在執行讀取操作,需要兩次統計資料的總量,前一次查|詢資料總量後,此時事務b執行了新增資料的操作並提交後,這個時候事務a讀取的資料總量和之前統計的不一樣,就像產生了幻覺一樣,平白無故的多了幾條資料,稱為幻讀。

原子性(atomicity)

一致性(consistency)

隔離性(lsolation)

永續性(durability)

mysql事務預設是自動提交的,當sql語句提交時事務便自動提交

事務控制語句

手動對事務進行控制的方法

mysql中的資料用各種不同的技術儲存在檔案中,每一種技術都使用不同的儲存機制、索引技巧、鎖定水平並最終提供不同的功能和能力,這些不同的技術以及配套的功能在mysql中稱為儲存引擎儲存引擎是mysql將資料儲存在檔案系統中的儲存方式或者儲存格式mysql常用的儲存引擎

myisam

lnnodbmysql資料庫中的元件,負責執行實際的資料io操作mysql系統中,儲存引擎處於檔案系統之上,在資料儲存到資料檔案之前會傳輸到儲存引擎,之後按照各個儲存引擎的儲存格式進行儲存ⅰ、myisam的介紹

myisam不支援事務,也不支援外來鍵

訪問速度快

對事務完整性沒有要求

myisam在磁碟上儲存成三個檔案

● frm檔案儲存表定義

●資料檔案的擴充套件名為.myd (mydata)

●索引檔案的副檔名是.myi (myindex)

表級鎖定形式,資料在更新時鎖定整個表

資料庫在讀寫過程中相互阻塞

● 會在資料寫入的過程阻塞使用者資料的讀取

●也會在資料讀取的過程中阻塞使用者的資料寫入

資料單獨寫入或讀取,速度過程較快且占用資源相對少

mylam支援的儲存格式

靜態表:是預設的儲存格式。靜態表中的字段都是非可變字段,這樣每個記錄都是固定長度的,這種儲存方式的優點是儲存非常迅速,容易快取,出現故障容易恢復;缺點是占用的空間通常比動態表多。靜態表在資料儲存時會根據列定義的寬度定義補足空格,但是在訪問的時候並不會得到這些空格,這些空格在返回給應用之前已經去掉。同時需要注意:在某些情況下可能需要返回欄位後的空格,而使用這種格式時後面的空格會被自動處理掉。

動態表:包含可變字段,記錄不是固定長度的,這樣儲存的優點是占用空間較少,但是頻繁的更新、刪除記錄會產生碎片,需要定期執行optimize table語句或myisamchk -r命令來改善效能,並且出現故障的時候恢復相對比較困難。

壓縮表:由myisamchk工具建立,佔據非常小的空間,因為每條記錄都是被單獨壓縮的所以只有非常小的訪問開支。

ⅱ、myisam適用的生產場景舉例

公司業務不需要事務的支援

單方面讀取或寫入資料比較多的業務

mylsam儲存引擎資料讀寫都比較頻繁場景不

使用讀寫併發訪問相對較低的業務

資料修改相對較少的業務

對資料業務一致性要求不是非常高的業務

伺服器硬體資源相對比較差

ⅲ、lnnodb特點介紹

支援4個事務隔離級別

行級鎖定,但是全表掃瞄仍然會是表級鎖定

讀寫阻塞與事務隔離級別相關

能能非常高效的快取索引和資料

表與主鍵以簇的方式儲存

支援分割槽、表空間,類似oracle資料庫

支援外來鍵約束,5.5前不支援全文索引,5.5後支援全文索引

對硬體資源要求還是比較高的場合

ⅳ、lnnodb適用生產場景分析

業務需要事務的支援

行級鎖定對高併發有很好的適應能力,但需確保查詢是通過索引來完成

業務資料更新較為頻繁的場景

如:論壇,微博等

業務資料一致性要求較高

如:銀行業務

硬體裝置記憶體較大,利用innodb較好的快取能力來提高記憶體利用率,減少磁碟io的壓力

方法1: alter table修改

alter table table_name engine=引擎
方法2:修改my.cnf,指定預設儲存引擎並重啟服務

default

-storage-engine=innodb

方法3: create table建立表時指定儲存引擎

create table 表名

(字段) engine =引擎

方法4: mysql_convert_table_format轉化儲存引擎

mysql_convert_table_format -user=root -password=密碼

-sock=

/tmp/mysql.sock -engine =引擎庫名錶名

mysql索引 事務 儲存 引擎的應用

1 索引的作用 全文索引 索引的型別為fulltext,全文索引可以在varchar或text型別的列 上建立,使用者查詢乙個資料的次數越多,速度越快 1 事務的作用 1 儲存引擎的概念 mysql中的資料用各種不同的技術儲存在檔案中,每一種技術都使用不同的儲存機制 索引技巧 鎖定水平,並最終提供不...

mysql儲存引擎,事務,事務回滾

檢視已有表的使用儲存引擎 show create table 表名 g 檢視當前資料庫的預設儲存引擎和可提供的儲存引擎 show engines 修改儲存引擎 step1 修改配置檔案 etc my.cnf default storage engine 儲存引擎 step2 重啟mysqld服務 修...

MySql儲存引擎和索引

mysql的儲存引擎表示的是mysql中資料庫表的儲存型別,不同儲存型別,表的儲存方式都不相同。檢視當前mysql版本支援哪些引擎,可以輸入以下命令 mysql show engines g 可以發現有很多儲存引擎,這裡只討論innodb myisam memory這三種。innodb innodb...