MariaDB速度慢?進階正確使用,沒設定對,不要再嫌棄他慢24.04|22.04|20.04|18.04

閱讀時間約 5 分鐘

一開始先定義好你的需求: 你需要極高的讀取效率或是極高的寫入效率? 需求定義好之後,我們就開始今天的內容。


講結論:

需要極高讀取效率請選擇MyISAM 儲存引擎;

需要極高寫入效率請選擇InnoDB 儲存引擎;


MyISAM/InnoDB原理與比較:


原理相異處:

MyISAM 儲存引擎採用了一種稱為「表層級鎖定」(Table-level Locking)的鎖定機制,這意味著對於一張表的讀取操作和寫入操作是互斥的,也就是說,當一個執行緒在寫入資料時,其他所有執行緒都不能進行任何讀寫操作。但是,在讀取數據時,MyISAM 儲存引擎可以使用「同時讀」(Concurrent Reading)的方式,多個執行緒可以同時讀取同一張表中的數據,因此 MyISAM 儲存引擎的讀取效率非常高。


InnoDB 儲存引擎採用了一種更細緻的鎖定機制,即「行層級鎖定」(Row-level Locking)。這種鎖定機制可以保證在Concurrent的情況下,每個執行緒都只鎖定自己需要的行而不是整張表,從而避免了 MyISAM 儲存引擎的寫入衝突問題。因此,InnoDB 儲存引擎在寫入資料時會比 MyISAM 儲存引擎更有效率。


結構部分:

MyISAM:每個MyISAM在磁碟上儲存成三個檔案。名列前茅的文件的名字會以表的名字開始,副檔名是文件類型。.frm檔案儲存表定義。資料檔案的副檔名為.MYD (MYData)。索引檔的副檔名是.MYI (MYIndex)。


InnoDB:基於磁碟的資源是InnoDB表空間資料檔案和它的日誌文件,InnoDB 表的大小只受限於作業系統文件的大小,一般為 2GB。



任務部分:

MyISAM類型的表格強調的是效能,其執行數度比InnoDB類型更快,但不提供交易支援。

InnoDB提供交易支援,外鍵(foreign key)等高階資料庫功能。


SELECT UPDATE,INSERT,DELETE操作部分:


MyISAM:因為鎖定寫入,天然的適合執行大量的SELECT。


InnoDB:如果要執行大量的INSERT或UPDATE,出於效能方面的考慮,應該使用InnoDB表。

DELETE FROM table時,InnoDB不會重新建立表,而是一行一行的刪除。

LOAD TABLE FROM MASTER操作對InnoDB是不起作用的,解決方法是先把InnoDB表改成MyISAM表,導入資料後再改成InnoDB表,但是對於使用的額外的InnoDB特性(例如外鍵)的表不適用。



AUTO_INCREMENT的操作部分:

MyISAM:INSERT和UPDATE作業時自動更新列。這使得AUTO_INCREMENT列更快(至少10%)。在序列頂的值被刪除之後就不能再用。 (當AUTO_INCREMENT列被定義為多列索引的最後一列,可以出現重複使用從序列頂部刪除的值的情況)。

AUTO_INCREMENT值可用ALTER TABLE或myisamch來重設。

對於AUTO_INCREMENT類型的欄位,InnoDB中必須包含只有該欄位的索引,但是在MyISAM表中,可以和其他欄位一起建立聯合索引。


InnoDB:如果為一個表指定AUTO_INCREMENT,在資料詞典裡的InnoDB表將包含一個名為自動計數器的計數器,它被用在為該列賦予新值。

自動增長計數器僅儲存在主記憶體中,而不是存在磁碟上。


表的具體行數不同部分:

MyISAM:select count() from table,MyISAM只要簡單的讀出保存好的行數,注意的是,當count()語句包含 where條件時,兩種表的操作是一樣的。

InnoDB:InnoDB 中不保存表格的具體行數,也就是說,執行select count(*) from table時,InnoDB要掃描一遍整個表來計算有多少行。


鎖不同的部分:

MyISAM:以表為鎖。

InnoDB:提供行鎖(locking on row level),提供與Oracle 類型一致的不加鎖讀取(non-locking read in SELECTs),另外,InnoDB表的行鎖也不是絕對的,如果在執行一個SQL語句時MySQL無法確定要掃描的範圍,InnoDB表同樣會鎖定全表,例如update table set num=1 where name like “%H%”。


MYISAM和INNODB是MariaDB提供的兩種儲存引擎。兩者的優劣可謂各有千秋。 INNODB會支援一些關聯式資料庫的高階功能,MYISAM不支援。但MYISAM的性能更優,佔用的儲存空間少。所以,選擇何種儲存引擎,視具體應用而定。


如果你的應用程式一定要使用多元或高階功能,毫無疑問你要選擇INNODB引擎。但要注意,INNODB的行級鎖定是有條件的。在where條件沒有使用主鍵時,照樣會鎖定全表。例如DELETE FROM ATable這樣的刪除語句。


如果你的應用程式對查詢效能要求較高,就要使用MYISAM了。 MYISAM索引和資料是分開的,而且其索引是壓縮的,可以更好地利用記憶體。所以它的查詢效能明顯優於INNODB。壓縮後的索引也能節省一些磁碟空間。 MYISAM擁有全文索引的功能,這可以大幅優化LIKE查詢的效率。


有人說MYISAM只能用於小型應用,其實這只是一種偏見。如果資料量比較大,這是需要透過升級架構來解決,例如分表分庫(實際上真實的檔案獨立等),而不是單純地依賴儲存引擎。




4會員
73內容數
記錄生活與技術的小細節
留言0
查看全部
發表第一個留言支持創作者!
iBonnie_愛邦尼 的其他內容
在 Ubuntu上,要刪除 MariaDB,請使用下命令: sudo apt autoremove mariadb-server mariadb-client --purge -y 在開啟的「套件配置」精靈中,選擇「是」選項以刪除所有 MariaDB 資料庫: 如您所見,我們已成功從 Ubun
登入資料庫方式,請執行以下的命令: sudo mysql -u root -p 建立一個新資料庫,我們建立“itslinuxfoss”資料庫為例: CREATE DATABASE itslinuxfoss; 為新建立的資料庫設定新的使用者名稱和密碼: GRANT ALL PRIVILEGE
Install Java (OpenJDK) on Ubuntu: sudo apt update && sudo apt -y install default-jdk java -version Add repository and install DBeaver CE: curl -
Update system packages sudo apt update && sudo apt upgrade -y Install additional dependencies sudo apt-get install wget software-properties-common
在 Ubuntu上,要刪除 MariaDB,請使用下命令: sudo apt autoremove mariadb-server mariadb-client --purge -y 在開啟的「套件配置」精靈中,選擇「是」選項以刪除所有 MariaDB 資料庫: 如您所見,我們已成功從 Ubun
登入資料庫方式,請執行以下的命令: sudo mysql -u root -p 建立一個新資料庫,我們建立“itslinuxfoss”資料庫為例: CREATE DATABASE itslinuxfoss; 為新建立的資料庫設定新的使用者名稱和密碼: GRANT ALL PRIVILEGE
Install Java (OpenJDK) on Ubuntu: sudo apt update && sudo apt -y install default-jdk java -version Add repository and install DBeaver CE: curl -
Update system packages sudo apt update && sudo apt upgrade -y Install additional dependencies sudo apt-get install wget software-properties-common
你可能也想看
Google News 追蹤
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
美國總統大選只剩下三天, 我們觀察一整週民調與金融市場的變化(包含賭局), 到本週五下午3:00前為止, 誰是美國總統幾乎大概可以猜到60-70%的機率, 本篇文章就是以大選結局為主軸來討論近期甚至到未來四年美股可能的改變
我想用愛心進行提問:地球人,能否示範給星星兒看? 當然,主要是能用星星兒具理解的方式。 如果做不到,那麼,不就沒有必要傷害星星兒嗎? 因為,星星兒的學習速度慢,反而得不到肯定。 照顧者務必在離開人世前,訓練好星星兒 相信大部分的地球人,根本見不到星星兒和照顧者都有在努力。 既然見不到,那
這問題要問我,我只能說,大部分來說,沒有錯。 只是,因為自閉症者的固著性,連基本的「變通」,也學的慢。 因為自閉症者的固著性,導致無法順利的短時間適應轉變 問題找出來了,那麼,就放任自閉症者不管? 事實上,完全不是。 其實,主要以「陪伴」自閉症者為主。 在自閉症者遇到轉變而不知如何因應,
會想提這主題,是因為今天在慈惠日間見到一件值得警剔的事實。 就是,徐姓學員,到康復之家偷東西。 其實,在基督教的十誡,有一誡是,不可偷盜。 就算是未信主者,只要有讀過書,都知道這事實。 而自閉症者的話,直接強制送到急性病房,反而有反效果。 因為,自閉症者,在建立〝持有權〞的認知,慢到爆。
在全聯,見到很多的顧客大排長龍,都有廣播,請支援收銀。 這麼做,是讓別的顧客有別的選擇,也可以讓部分的顧客,一來是節省時間,二來是能順利在買完東西後,去做別的重要事。 因此,見到速度慢的自閉症店員,可以請店長來。 甚至,自閉症店員也可以藉由廣播,來協助自閉症店員分擔人力。 因此,要是有顧客見到這情況
(續上篇) 離開台北時,我在網路上買了一輛福特汽車,用三萬元買下它,這個價錢,我想已經不需要用其他形容詞來描述它的裝備和性能,雖然如此,這一輛老舊汽車,還是滿足了我一些心理與生活上的需求,可以將我帶到更遠的另一個世界,雖然速度慢了一點,不過也少了些風風雨雨。
Thumbnail
怎麼正確參拜神社「二拜二拍手一拜」? 想來聊進階版,拿顯微鏡放大細節。
1. $ C:\wamp64\bin\mariadb\mariadb10.6.3\bin\mysql.exe -u username -p --default-character-set=utf8 2. 選擇db: $ use dbname; 3. 匯入資料: $ source c:\xxx.sq
Thumbnail
新型冠狀病毒肺炎(COVID-19)本土確診數降不下來,大家都想知道疫情何時趨緩。星座專家唐綺陽(1日)在臉書表示,6月是混亂的狀態,但會往「越來越正確」的方向前進,並說6月下旬事情會出現轉折。 唐綺陽指出,6月的確充滿轉折和變數,「挑戰、反思多,追悔也多,但悔恨無用」,尤其中旬是關鍵,而這
Thumbnail
進彎前先煞車,然後帶著煞車退檔,到了進彎點開始傾倒、轉向,看到APEX油門轉到底出彎...這是一般我們對處理彎道的認知,也是大部分騎士心中的Common sense 參照:基本轉角處理,你真的會外內外嗎? 但是如果遇到半徑超級大、長度又遠的大回轉彎道,這個原則又要做些修正而成為所謂的DOUBLE
Thumbnail
作者推薦本文原因: 如果遇到EXCEL檔案太胖怎麼辦呢? Excel表格通常只有文字內容,按常理來說,應該是佔不了多大空間,但卻不知道為什麼卻總是佔用電腦一堆記憶體,打開和保存檔案的速度也特別的慢,有時候還會導致電腦當掉,非常令人苦惱。 原文來源:檔案太「胖」開啟速度慢?一分鐘壓縮excel檔案優化
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
美國總統大選只剩下三天, 我們觀察一整週民調與金融市場的變化(包含賭局), 到本週五下午3:00前為止, 誰是美國總統幾乎大概可以猜到60-70%的機率, 本篇文章就是以大選結局為主軸來討論近期甚至到未來四年美股可能的改變
我想用愛心進行提問:地球人,能否示範給星星兒看? 當然,主要是能用星星兒具理解的方式。 如果做不到,那麼,不就沒有必要傷害星星兒嗎? 因為,星星兒的學習速度慢,反而得不到肯定。 照顧者務必在離開人世前,訓練好星星兒 相信大部分的地球人,根本見不到星星兒和照顧者都有在努力。 既然見不到,那
這問題要問我,我只能說,大部分來說,沒有錯。 只是,因為自閉症者的固著性,連基本的「變通」,也學的慢。 因為自閉症者的固著性,導致無法順利的短時間適應轉變 問題找出來了,那麼,就放任自閉症者不管? 事實上,完全不是。 其實,主要以「陪伴」自閉症者為主。 在自閉症者遇到轉變而不知如何因應,
會想提這主題,是因為今天在慈惠日間見到一件值得警剔的事實。 就是,徐姓學員,到康復之家偷東西。 其實,在基督教的十誡,有一誡是,不可偷盜。 就算是未信主者,只要有讀過書,都知道這事實。 而自閉症者的話,直接強制送到急性病房,反而有反效果。 因為,自閉症者,在建立〝持有權〞的認知,慢到爆。
在全聯,見到很多的顧客大排長龍,都有廣播,請支援收銀。 這麼做,是讓別的顧客有別的選擇,也可以讓部分的顧客,一來是節省時間,二來是能順利在買完東西後,去做別的重要事。 因此,見到速度慢的自閉症店員,可以請店長來。 甚至,自閉症店員也可以藉由廣播,來協助自閉症店員分擔人力。 因此,要是有顧客見到這情況
(續上篇) 離開台北時,我在網路上買了一輛福特汽車,用三萬元買下它,這個價錢,我想已經不需要用其他形容詞來描述它的裝備和性能,雖然如此,這一輛老舊汽車,還是滿足了我一些心理與生活上的需求,可以將我帶到更遠的另一個世界,雖然速度慢了一點,不過也少了些風風雨雨。
Thumbnail
怎麼正確參拜神社「二拜二拍手一拜」? 想來聊進階版,拿顯微鏡放大細節。
1. $ C:\wamp64\bin\mariadb\mariadb10.6.3\bin\mysql.exe -u username -p --default-character-set=utf8 2. 選擇db: $ use dbname; 3. 匯入資料: $ source c:\xxx.sq
Thumbnail
新型冠狀病毒肺炎(COVID-19)本土確診數降不下來,大家都想知道疫情何時趨緩。星座專家唐綺陽(1日)在臉書表示,6月是混亂的狀態,但會往「越來越正確」的方向前進,並說6月下旬事情會出現轉折。 唐綺陽指出,6月的確充滿轉折和變數,「挑戰、反思多,追悔也多,但悔恨無用」,尤其中旬是關鍵,而這
Thumbnail
進彎前先煞車,然後帶著煞車退檔,到了進彎點開始傾倒、轉向,看到APEX油門轉到底出彎...這是一般我們對處理彎道的認知,也是大部分騎士心中的Common sense 參照:基本轉角處理,你真的會外內外嗎? 但是如果遇到半徑超級大、長度又遠的大回轉彎道,這個原則又要做些修正而成為所謂的DOUBLE
Thumbnail
作者推薦本文原因: 如果遇到EXCEL檔案太胖怎麼辦呢? Excel表格通常只有文字內容,按常理來說,應該是佔不了多大空間,但卻不知道為什麼卻總是佔用電腦一堆記憶體,打開和保存檔案的速度也特別的慢,有時候還會導致電腦當掉,非常令人苦惱。 原文來源:檔案太「胖」開啟速度慢?一分鐘壓縮excel檔案優化