<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
索引是一種特殊的檔案,包含著對資料表裡所有記錄的參照指標。可以對錶中的一列或多列建立索引,並指定索引的型別,各類索引有各自的資料結構實現。索引就相當於一本書的目錄,通過索引 可快速定位、檢索資料。使用索引大大提高了查詢效率,但同時索引也佔用了更多的空間,拖慢了增刪改的速度。
1、資料量較大,且經常對這些列進行條件查詢。
2、該資料庫表的插入操作,及對這些列的修改操作頻率較低。
3、索引會佔用額外的磁碟空間。
滿足以上條件時,考慮對錶中的這些欄位建立索引,以提高查詢效率。
反之,如果非條件查詢列,或經常做插入、修改操作,或磁碟空間不足時,不考慮建立索引。
1、建立索引 對於非主鍵、非唯一約束、非外來鍵的欄位,可以建立普通索引。
create index 索引名 on 表名(欄位名);
2、檢視索引
show index from 表名;
3、刪除索引
drop index 索引名 on 表名;
索引背後的資料結構是B+樹。
B+樹優勢:
1、使用B+樹進行查詢的時候整體的磁碟IO次數是比較少的。
2、所有的查詢最終都會落到葉子節點上,每次查詢的磁碟IO次數都是差不多的,查詢速度比較穩定。
3、葉子結點用連結串列連線之後,非常適合進行範圍查詢。
4、所有的資料儲存(載荷)都是放到葉子節點上的,非葉子節點中只儲存key值即可,因此非葉子節點整體佔用的空間較小,甚至可以快取到記憶體中(一旦能夠全部放記憶體裡,這時候磁碟IO幾乎沒了)。
事務指邏輯上的一組操作,組成這組操作的各個單元,要麼全部成功,要麼全部失敗。 在不同的環境中,都可以有事務。對應在資料庫中,就是資料庫事務。就是說兩個操作要麼都執行,要麼一個都不執行。 就比如說現在有A、B兩個賬戶,兩個賬戶上都有1000元,現在A要給B轉500元,那麼A賬戶上就要少500元,B賬戶上要多500,兩個操作都要執行。不能存在一個執行一個不執行,要麼都不執行。 在sql中,如果第一個sql執行之後,第二個sql執行時出現意外,導致不能執行,這時候資料庫就會還原操作,讓第一個sql還原到執行之前(回滾)。那麼資料庫是怎麼還原的呢?是因為資料庫會將執行過的每個操作都記錄下來。
⭐ 事務的相關操作
1、開啟事務
start transaction;
2、回滾或提交
rollback/commit; //rollback即是全部失敗,commit即是全部成功。
1、原子性
原子性是指兩個操作要麼全部都執行,要麼一個都不執行,操作不可再細分了。
2、一致性
一致性是指資料庫的資料在事務執行之前和之後都要是合理合法的。(例如上面的轉賬,賬戶不能出現負數的情況)
3、永續性
永續性是指事務一旦被提交之後,資料就被寫入硬碟,持久化的儲存起來了。
4、隔離性
隔離性是指事務並行執行時產生的情況。
事務並行執行是指多個事務同時執行,多個事務並行執行時,尤其時多個事務在嘗試修改、讀取同一份資料時,很容易出現一些問題,隔離性就是在處理這些問題。
⭐並行執行事務可能帶來的問題:
1、髒讀問題
事務A正在輸入某些資料,這是事務B過來讀取了事務A正在輸入的資料,然後B回去按照A的資料進行輸入,若事務A在事務B讀取資料之後對資料進行了修改,這時候事務B讀到的資料就有可能是一個"髒資料"(這個資料只是一個臨時的的結果,而不是最終結果),這就是髒讀問題。
如何處理髒讀問題?
在寫資料的時候進行加鎖處理,等A完全寫完修改完之後再讓B看,這時候事務之間的隔離性就提高了,但同時並行性也降低了。
2、不可重複讀問題
按照以上處理,等到A全部寫完B再看,但是如果A在B讀的時候又修改了程式碼,這時候B再回過頭來看,資料又不一樣了,不能重複讀這個資料,這怎麼辦?這時候乾脆就將讀也加上鎖,在A寫入資料的時候B不能讀,在B讀資料的時候A也不能修改。這時候事務的隔離性又提高了,並行性又降低了。
3、幻讀問題
以上兩個操作,給讀和寫都加上了鎖,雖然它的隔離性提高了,但是卻降低了效率,導致讀和寫的時間都變得更長了起來,這時候在寫或者讀的過程事務可以去改其他表或者這個表的其他行(事務雖然在提交隔離性時進行了一系列的加鎖,但是並沒有把整個資料庫給鎖定了),這時候B在讀資料的時候會發現資料數量變了,本來只有一個A.java,現在又多了個B.java,這就是幻讀問題。總的來說就是一個事務執行過程中進行多次查詢,每次查詢的結果集不一樣(多或者少),這也是一種特殊的不可重複讀問題。
該如何解決呢?
事務序列化執行。(序列化執行就是事務一個一個執行)
通過以上我們也知道了隔離性和並行性不能同時得到,要想提高隔離性,並行性就得降低。
進行了以上修改,這時候隔離性程度最高,並行性程度最低,資料最可靠,速度也最慢。
⭐根據以上總結,MySQL中事務的隔離級別,提供了以下這幾種:
1. read uncommitted:允許讀取未提交的資料,並行程度最高,隔離程度最低,會引入髒讀、不可重複讀、幻讀問題。
2. read committed:只允許讀取提交之後的資料,相當於寫加鎖,並行程度降低了一些,隔離程度提高了一些, 解決了髒讀,會引入不可重複讀和幻讀。
3. repeatable read:相當於給讀和寫都加鎖,並行程度又降低了,隔離程度又提高了,解決了髒讀和不可重複度,會引入幻讀。
4. serializable:序列化,並行程度最低(序列執行),隔離程度最高,解決了髒讀,不可重複度,幻讀問題,但是執行速度最慢。
這裡主要掌握索引是什麼,它的適用場景,付出了什麼代價以及索引背後的資料結構,事務的四個基本特性。
到此這篇關於MySql索引和事務定義到使用全面涵蓋的文章就介紹到這了,更多相關MySql索引和事務內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45