索引建立的方法
建立索引的原則依據
檢視索引的方法
刪除索引的方法
事務的概念
事務的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...