2017年6月8日,天氣陰。心情晴。
連續做夢兩個晚上了,昨晚竟然夢見一個很長時間不聯絡的國中同學了,早上上班的路上聊了聊。女孩現在出差在貴州,風景優美的地方。我說「你現在生活很滋潤」。女孩說「那是你沒有看到我不滋潤的一面」。確實,在生活中我們總是把自己光鮮的一面展示給別人,而把落魄的一面「偽裝起來」。
昨天博客上有博友問我問題,竟然稱呼我為“大神”,心裡慌的很,因為自己很清楚距離這個“大神”相差甚遠,所以得加倍努力,朝著「大神」的目標前進。
博友問的問題是關於Mysql資料庫的,其中涉及資料引擎和修復、最佳化資料表語句,之前從來沒有考慮過這些問題,更沒有用過。所以找了一些資料來了解了一下,現在把自己找到的資料總結如下。
1.Mysql資料庫儲存引擎
概念:
#儲存引擎其實是如何實現儲存數據,如何為儲存的資料建立索引以及如何更新,查詢資料等技術實現的方法。 MySQL中的資料以各種不同的技術儲存在檔案(或記憶體)中,這些技術中的每一種技術都使用不同的儲存機制,索引技巧,鎖定水平並且最終提供廣泛的不同功能和能力。在MySQL中將這些不同的技術及配套的相關功能稱為儲存引擎。
(1)innoDB儲存引擎
①innodb儲存引擎的mysql表提供了事務,回滾以及系統崩潰修復能力和多版本並發控制的事務安全。
②innodb支援自增長列(auto_increment),自增長列的值不能為空,如果在使用的時候為空的話怎會進行自動從現有的值開始增長,如果有但是比現在的還大,則就儲存這個值。
③innodb儲存引擎支援外鍵(foreign key),外鍵所在的表稱為子表(或從表),而所依賴的表稱為父表(或主表)。
④innodb儲存引擎最重要的是支援事務,以及事務相關聯功能。
⑤innodb儲存引擎支援mvcc的行級鎖定。
⑥innodb儲存引擎索引使用的是B+Tree。
(2)MyISAM儲存引擎
1)MyISAM 這種儲存引擎不支援事務,不支援行級鎖,只支援並發插入的表鎖,主要用於高負載的select 。
2)MyISAM 類型的表格支援三種不同的儲存結構:靜態型、動態型、壓縮型。
①靜態型:就是定義的表格列的大小是固定(即不含有:xblob、xtext、varchar等長度可變的資料類型),這樣mysql就會自動使用靜態myisam格式。
使用靜態格式的表的效能比較高,因為在維護和存取的時候以預定格式儲存資料時所需的開銷很低。但這高效能是由空間換來的,因為在定義的時候是固定的,所以不管列中的值有多大,都會以最大值為準,佔據了整個空間。
②動態型:如果列(即使只有一列)定義為動態的(xblob, xtext, varchar等資料型別),這時myisam就會自動使用動態型。
雖然動態型的表格佔用了比靜態型表較少的空間,但帶來了效能的降低,因為如果某個欄位的內容改變則其位置很可能需要移動,這樣就會導致碎片的產生。隨著資料變化的怎多,碎片就會增加,資料存取效能就會相應的降低。
因碎片的原因而降低資料存取性,有兩種解決方法:
a、盡可能使用靜態資料類型。
b、經常使用optimize table語句,他會整理表的碎片,恢復因表的更新和刪除而導致的空間遺失。
如果儲存引擎不支援 optimize table , 則可以轉儲並重新載入數據,這樣也可以減少碎片。
③壓縮型:如果在這個資料庫中建立的是整個生命週期內只讀的表,則這種情況就是用myisam的壓縮型表來減少空間的佔用。
3)MyISAM也是使用B+tree索引,但和Innodb的在具體實作上有些不同。
(3)MEMORY儲存引擎
①memory儲存引擎相比前面的一些儲存引擎,有點不一樣,其使用儲存在記憶體中的資料來建立表,而且所有的資料也都儲存在記憶體中。
②每個基於memory儲存引擎的表格實際對應一個磁碟文件,該文件的檔案名稱和表名是相同的,類型為.frm。該文件只儲存表格的結構,而其資料文件,都是儲存在記憶體中,這樣有利於對資料的快速處理,提高整個表的處理能力。
③memory儲存引擎預設使用雜湊(HASH)索引,其速度比使用B+Tree型要快,如果讀者希望使用B樹型,則在創建的時候可以引用。
④memory儲存引擎檔案資料都儲存在記憶體中,如果mysqld進程發生異常,重新啟動或關機這些資料都會消失。所以memory儲存引擎中的表的生命週期很短,通常只使用一次。
(4)BlackHole儲存引擎(黑洞引擎)
支援事務,而且支援mvcc的行級鎖,主要用於日誌記錄或同步歸檔,而這個儲存引擎除非有特別目的,否則不適合使用!
2.Mysql下優化表和修復表
隨著mysql的長期使用,可以透過修復表來優化,優化時減少磁碟佔用空間,方便備份。
REPAIR TABLE `table_name` 修復表 OPTIMIZE TABLE `table_name` 最佳化表格
REPAIR TABLE -用來修復被破壞的表格。
OPTIMIZE TABLE—— 最佳化表,用於回收閒置的資料庫空間。當表上的資料行被刪除時,所佔據的磁碟空間並沒有立即被回收,使用了OPTIMIZE TABLE命令後這些空間將被回收,並且對磁碟上的資料行進行重排。
注意:是磁碟上,而非資料庫。
多數時間並不需要運行OPTIMIZE TABLE,只需在批量刪除資料行之後,定期(每週一次或每月一次)進行一次資料表優化操作即可,只對那些特定的表運行。
以上是關於Mysql資料庫的知識總結的詳細內容。更多資訊請關注PHP中文網其他相關文章!

在數據庫優化中,應根據查詢需求選擇索引策略:1.當查詢涉及多個列且條件順序固定時,使用複合索引;2.當查詢涉及多個列但條件順序不固定時,使用多個單列索引。複合索引適用於優化多列查詢,單列索引則適合單列查詢。

要優化MySQL慢查詢,需使用slowquerylog和performance_schema:1.啟用slowquerylog並設置閾值,記錄慢查詢;2.利用performance_schema分析查詢執行細節,找出性能瓶頸並優化。

MySQL和SQL是開發者必備技能。 1.MySQL是開源的關係型數據庫管理系統,SQL是用於管理和操作數據庫的標準語言。 2.MySQL通過高效的數據存儲和檢索功能支持多種存儲引擎,SQL通過簡單語句完成複雜數據操作。 3.使用示例包括基本查詢和高級查詢,如按條件過濾和排序。 4.常見錯誤包括語法錯誤和性能問題,可通過檢查SQL語句和使用EXPLAIN命令優化。 5.性能優化技巧包括使用索引、避免全表掃描、優化JOIN操作和提升代碼可讀性。

MySQL異步主從復制通過binlog實現數據同步,提升讀性能和高可用性。 1)主服務器記錄變更到binlog;2)從服務器通過I/O線程讀取binlog;3)從服務器的SQL線程應用binlog同步數據。

MySQL是一個開源的關係型數據庫管理系統。 1)創建數據庫和表:使用CREATEDATABASE和CREATETABLE命令。 2)基本操作:INSERT、UPDATE、DELETE和SELECT。 3)高級操作:JOIN、子查詢和事務處理。 4)調試技巧:檢查語法、數據類型和權限。 5)優化建議:使用索引、避免SELECT*和使用事務。

MySQL的安裝和基本操作包括:1.下載並安裝MySQL,設置根用戶密碼;2.使用SQL命令創建數據庫和表,如CREATEDATABASE和CREATETABLE;3.執行CRUD操作,使用INSERT,SELECT,UPDATE,DELETE命令;4.創建索引和存儲過程以優化性能和實現複雜邏輯。通過這些步驟,你可以從零開始構建和管理MySQL數據庫。

InnoDBBufferPool通過將數據和索引頁加載到內存中來提升MySQL數據庫的性能。 1)數據頁加載到BufferPool中,減少磁盤I/O。 2)臟頁被標記並定期刷新到磁盤。 3)LRU算法管理數據頁淘汰。 4)預讀機制提前加載可能需要的數據頁。

MySQL適合初學者使用,因為它安裝簡單、功能強大且易於管理數據。 1.安裝和配置簡單,適用於多種操作系統。 2.支持基本操作如創建數據庫和表、插入、查詢、更新和刪除數據。 3.提供高級功能如JOIN操作和子查詢。 4.可以通過索引、查詢優化和分錶分區來提升性能。 5.支持備份、恢復和安全措施,確保數據的安全和一致性。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

Atom編輯器mac版下載
最受歡迎的的開源編輯器

mPDF
mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

MantisBT
Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

Dreamweaver Mac版
視覺化網頁開發工具

記事本++7.3.1
好用且免費的程式碼編輯器