1.第一類丟失更新:撤消乙個事務時,把其它事務已提交的更新的資料覆蓋了。
2. 髒讀:乙個事務讀到另乙個事務未提交的更新資料。
3. 幻讀:乙個事務執行兩次查詢,但第二次查詢比第一次查詢多出了一些資料行。
4. 不可重複讀:乙個事務兩次讀同一行資料,可是這兩次讀到的資料不一樣。
5. 第二類丟失更新:這是不可重複讀 中的特例,乙個事務覆蓋另乙個事務已提交的更新資料。隔離
級別髒讀(
dirty read)
不可重讀(
unrepeatable read)
幻讀(phantom read)
讀操作未提交(
read uncommitted)
可能 可能
可能 讀操作已提交(
read committed)
不可能 可能
可能 可重讀(
repeatable read)
不可能
不可能 可能
可序列化(
serializable)
不可能
不可能
不可能
1. 為查詢快取優化你的查詢
2. explain你的 select 查詢
3. 當只要一行資料時使用 limit 1
4. 為搜尋欄位建索引
5. 在join表的時候使用相當型別的例,並將其索引
6. 避免 select *
7. 用join代替子查詢
8. 應盡量避免在 where 子句中使用!=或<>操作符,否則將引擎放棄使用索引而進行全表掃瞄。
alter table 《表名》 add index (《字段》);
5. 實踐中如何優化mysql
我當時是按以下四條依次回答的,他們四條從效果上第一條影響最大,後面越來越小。
① sql語句及索引的優化 單列索引(主鍵索引,唯索引,普通索引)和組合索引
② 資料庫表結構的優化
③ 系統配置的優化
④ 硬體的優化
6. 什麼情況下設定了索引但無法使用
① 以「%」開頭的like語句,模糊匹配
② or語句前後沒有同時使用索引
③ 資料型別出現隱式轉化(如varchar不加單引號的話可能會自動轉換為int型)
8. 索引的底層實現原理和優化
1.新增primary key(主鍵索引) mysql>alter table`table_name` add primary key ( `column` )
2.新增unique(唯一索引) mysql>altertable `table_name` add unique ( `column` )
3.新增index(普通索引) mysql>altertable `table_name` add index index_name ( `column` )
4.新增fulltext(全文索引) mysql>altertable `table_name` add fulltext ( `column`)
5.新增多列索引 mysql>alter table `table_name` add index index_name ( `column1`,`column2`, `column3` )
linux
: 動態程序 top –p 123 樹形程序pstree 埠 netstat -apn | grep 80 終結程序 kill-9 123
速記!資料庫的四種隔離級別
4種隔離級別 括號為快速記憶提示 1 read uncommitted 讀未提交 描述 乙個事務對一行資料修改的過程中,不允許,另乙個事務進行修改,但允許,另乙個事務進行讀。因此,本級別下,不會出現更新丟失,但會出現髒讀 不可重複讀。寫允許讀 2 read committed 讀提交,oracle預...
資料庫 資料庫索引
索引是儲存引擎用於快速找到記錄的一種資料結構。索引以檔案的形式儲存在磁碟中。索引可以包含乙個或多個列的值。儲存引擎查詢資料的時候,先在索引中找對應值,然後根據匹配的索引記錄找到對應的資料行。1.b tree索引 2.雜湊索引 myisam和innodb儲存引擎 只支援btree索引,也就是說預設使用...
資料庫 資料庫正規化
關聯式資料庫的設計規範。不同的規範要求被稱為不同的正規化,越高的正規化資料庫冗餘越小。減少資料庫中資料冗餘的過程 1 第一正規化 1nf 在關係模式r中,當且僅當所有屬性只包含原子值,即每個分量都是不可再分的資料項,則稱r滿足1nf。例如表所示的教師職稱情況關係就不滿足1nf。原因在於,該關係模式中...