<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                [TOC] # :-: **數據庫三大范式是什么** 第一范式:每個列都不可以再拆分。 第二范式:在第一范式的基礎上,非主鍵列完全依賴于主鍵,而不能是依賴于主鍵的一部分。 第三范式:在第二范式的基礎上,非主鍵列只依賴于主鍵,不依賴于其他非主鍵。 在設計數據庫結構的時候,要盡量遵守三范式,如果不遵守,必須有足夠的理由。比如性能。事實上我們經常會為了性能而妥協數據庫的設計。 # :-: **MySQL存儲引擎MyISAM與InnoDB區別** mysql引擎有9種:一般常用的有2種Innodb,MyISAM ![](https://img.kancloud.cn/5f/ad/5fad7c2187cece0b79a5a642a8ccc2c2_555x376.png) **Innodb引擎:** Innodb引擎提供了對數據庫ACID事務的支持。并且還提供了行級鎖和外鍵的約束。它的設計的目標就是 處理大數據容量的數據庫系統。 **主要特性有:** * [ ] 支持事務回滾,確保數據的一致性要求 * [ ] 災難恢復性好 * [ ] 為處理巨大數據量的最大性能設計 * [ ] 實現了緩沖管理,不僅能緩沖索引也能緩沖數據,并且會自動創建散列索引以加快數據的獲取 * [ ] 支持外鍵完整性約束。存儲表中的數據時,每張表的存儲都按逐漸順序存放,如果沒有顯示在表定義時指定主鍵,InnoDB會為每一行生成一個6B的ROWID,并以此作為主鍵。 * [ ] 被用在眾多需要高性能的大型數據庫站點上 **MyISAM引擎:** 基于 ISAM 的存儲引擎,并對其進行擴展。它是在Web、數據存儲和其他應用環境下最常使用的存儲引擎之一。MyISAM 擁有較高的插入、查詢速度,但不支持事務。在 MySQL5.5.5 之前的版本中,MyISAM 是默認的存儲引擎。 **主要特性有:** * [ ] 不支持事務 * [ ] 使用表級鎖,并發性差 * [ ] 主機宕機后,MyISAM表易損壞,災難恢復性不佳 * [ ] 可以配合鎖,實現操作系統下的復制備份、遷移 * [ ] 只緩存索引,數據的緩存是利用操作系統緩沖區來實現的。可能引發過多的系統調用且效率不佳 * [ ] 數據緊湊存儲,因此可獲得更小的索引和更快的全表掃描性能 * [ ] 可以把數據文件和索引文件放在不同目錄 * [ ] 使用 MyISAM 引擎創建數據庫,將產生3個文件。文件的名字以表的名字開始,擴展名指出文件類型:frm 文件存儲表定義,數據文件的擴展名為 .MYD(MYData),索引文件的擴展名是 .MYI(MYIndex)。 ### 應用場景 如果沒有特別的需求,使用默認的`Innodb`即可。 MyISAM:以讀寫插入為主的應用程序,比如博客系統、新聞門戶網站。 Innodb:更新(刪除)操作頻率也高,或者要保證數據的完整性;并發量高,支持事務和外鍵。比如OA自動化辦公系統。 # :-: **MySQL事務** **四大特性**:`原子性`、`隔離性`、`一致性`、`持久性`簡稱 ACID,缺一不可。 MySQL 事務主要用于處理操作量大,復雜度高的數據。比如說,在人員管理系統中,你刪除一個人員,你既需要刪除人員的基本資料,也要刪除和該人員相關的信息,如信箱,文章等等,這樣,這些數據庫操作語句就構成一個事務! 在 MySQL 中只有使用了 Innodb 數據庫引擎的數據庫或表才支持事務。 事務處理可以用來維護數據庫的完整性,保證成批的 SQL 語句要么全部執行,要么全部不執行。 事務用來管理 insert,update,delete 語句 一般來說,事務是必須滿足4個條件(ACID)::原子性(Atomicity,或稱不可分割性)、一致性(Consistency)、隔離性(Isolation,又稱獨立性)、持久性(Durability)。 **原子性**: 一個事務(transaction)中的所有操作,要么全部完成,要么全部不完成,不會結束在中間某個環節。事務在執行過程中發生錯誤,會被回滾(Rollback)到事務開始前的狀態,就像這個事務從來沒有執行過一樣。 **一致性:** 在事務開始之前和事務結束以后,數據庫的完整性沒有被破壞。這表示寫入的資料必須完全符合所有的預設規則,這包含資料的精確度、串聯性以及后續數據庫可以自發性地完成預定的工作。 **隔離性:** 數據庫允許多個并發事務同時對其數據進行讀寫和修改的能力,隔離性可以防止多個事務并發執行時由于交叉執行而導致數據的不一致。事務隔離分為不同級別,包括讀未提交(Read uncommitted)、讀提交(read committed)、可重復讀(repeatable read)和串行化(Serializable)。 **持久性:** 事務處理結束后,對數據的修改就是永久的,即便系統故障也不會丟失 # :-: **MySQL事務隔離級別的實現原理** PS:事務隔離級別是MySQL事務四大特性中的隔離性 SQL 標準定義了四種隔離級別,MySQL 全都支持。這四種隔離級別分別是: 1. 讀未提交(READ UNCOMMITTED)-臟讀 2. 讀提交 (READ COMMITTED) 3. 可重復讀 (REPEATABLE READ)-幻讀 4. 串行化 (SERIALIZABLE) 從上往下,隔離強度逐漸增強,性能逐漸變差。采用哪種隔離級別要根據系統需求權衡決定,其中,**可重復讀**是 MySQL 的默認級別。 事務隔離其實就是為了解決上面提到的臟讀、不可重復讀、幻讀這幾個問題,下面展示了 4 種隔離級別對這三個問題的解決程度。 | 隔離級別 | 臟讀 | 不可重復讀 | 幻讀 | | --- | --- | --- | --- | | 讀未提交 | 可能 | 可能 | 可能 | | 讀提交 | 不可能 | 可能 | 可能 | | 可重復讀 | 不可能 | 不可能 | 可能 | | 串行化 | 不可能 | 不可能 | 不可能 | 只有串行化的隔離級別解決了全部這 3 個問題,其他的 3 個隔離級別都有缺陷 # :-: **索引** ### **什么是索引?** 索引是一種特殊的文件(InnoDB數據表上的索引是表空間的一個組成部分),它們包含著對數據表里所有記錄的引用指針。 索引是一種數據結構。數據庫索引,是數據庫管理系統中一個排序的數據結構,以協助快速查詢、更新數據庫表中數據。索引的實現通常使用B樹及其變種B+樹。 更通俗的說,索引就相當于目錄。為了方便查找書中的內容,通過對內容建立索引形成目錄。索引是一個文件,它是要占據物理空間的。 ### **索引有哪些優缺點?** 索引的優點 * 可以大大加快數據的檢索速度,這也是創建索引的最主要的原因。 * 通過使用索引,可以在查詢的過程中,使用優化隱藏器,提高系統的性能。 索引的缺點 * 時間方面:創建索引和維護索引要耗費時間,具體地,當對表中的數據進行增加、刪除和修改的時候,索引也要動態的維護,會降低增/改/刪的執行效率; * 空間方面:索引需要占物理空間。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看