摘 要:在數(shù)據庫領域,MySQL是一種中小型的精致的、多用戶的和多線程的SQL型數(shù)據庫系統(tǒng),它具備一個服務器守護進程,以及許多不同的客戶程序,例如MySQLd和程序庫。本文針對MySQL應用日益廣泛的大背景,綜合論述了MySQL中的存儲管理技術,包括程序管理、數(shù)據維護管理、日志文件管理、用戶和權限管理、內存管理。
關鍵詞:MySQL;存儲管理;存儲策略
中圖分類號:TP316.81
1 研究背景
眾所周知,MySQL并不是開源產品,但它在某些情況下可以免費使用。由于MySQL具備強大的功能,同時有靈活豐富的應用程序編程接口,兼?zhèn)渚碌南到y(tǒng)結構,因此受到廣大自由軟件愛好者,甚至商業(yè)軟件用戶的青睞。MySQL有很好的綜合性能,它與當今其他商業(yè)數(shù)據庫系統(tǒng)相比的主要優(yōu)勢是三點:簡單、高效、高穩(wěn)定性。相比其他數(shù)據庫,MySQL有幾個顯著的特點。MySQL跨平臺性良好,比如微軟的WINDOWS系列,以及RED HAT LINUX和UNIX,MySQL在LINUX環(huán)境支持多線程操作模式;同時MySQL支持多個數(shù)據庫相互兼容(如Oracle,Informix,Sybase),還提供了支持ODBC模式;MySQL可以融合使用多種語言,比如JAVA、PERL、C、c++、PHP;另外MySQL提供了非常完善的權限機制?;谝陨咸攸c,MySQL應用日益廣泛,對其存儲管理策略進行研究很有必要。
2 MySQL程序管理
MySQL安裝完成之后,可以在/usr/bin路徑下找到MySQL程序管理單元。MySQLd_multi是管理多個MySQLd的服務進程,這些服務進程程序不同的unix socket或是監(jiān)聽于不同的端口。他可以啟動、停止和監(jiān)控當前的服務狀態(tài)。程序在my.cnf(或是在--config-file自定義的配置文件)中搜索[MySQLd#]段,\"#\"可以是任意的正整數(shù)。這個正整數(shù)就是在下面提及的段序列,即GNR。段的序號做為MySQLd_multi的參數(shù),來區(qū)別不同的段,這樣你就可以控制特定MySQLd進程的啟動、停止或得到他的報告信息。這些組里的參數(shù)就像啟動一個MySQLd所需要的組的參數(shù)一樣。但是,如果使用多服務,必須為每個服務指定一個unix socket或端口。
每一個GNR的值是組的序列號或是一個組的序列號范圍。此項的值必須是組名字最后的數(shù)字,比如說如果組名為MySQLd17,那么此項的值則為17.如果指定一個范圍,使用\"-\"(破折號)來連接二個數(shù)字。如GNR的值為10-13,則指組MySQLd10到組MySQLd13。多個組或是組范圍可以在命令行中指定,使用\",\"(逗號)隔開。不能有空白的字符(如空格或tab),在空白字符后面的參數(shù)將會被忽略。
3 MySQL數(shù)據維護管理
在MySQL數(shù)據庫系統(tǒng)當中,通常使用兩種方法來創(chuàng)建數(shù)據庫,一種是在MySQL客戶端程序環(huán)境下,使用創(chuàng)建數(shù)據庫SQL語句。另一種是在LINUX SHELL環(huán)境管理工具中,使用MySQLadmin命令進行創(chuàng)建。
MySQL數(shù)據目錄包含了所有的數(shù)據庫,以及表管理的服務器,這些均被組織成一個樹狀結構,這種結構是LINUX文件系統(tǒng)下的層次結構,是一個簡單的方法。針對MySQL數(shù)據庫每個對應的數(shù)據庫目錄,子目錄的數(shù)據庫對象作為存儲,主要在MySQL數(shù)據目錄中,但是并不是代表數(shù)據庫的名字必須是相同的。
數(shù)據庫中的表對應于數(shù)據庫目錄的文件,在數(shù)據庫目錄中每個表都對應于三個文件:格式文件,數(shù)據文件,索引文件。每個文件與表具有相同的基本名稱,分別擴展為指定文件類型,他們分別是格式文件、數(shù)據文件、索引文件。
4 MySQL日志信息管理
MySQL的日志信息管理地位很高,它提供了關于服務器運行的重要信息,因為數(shù)據庫的管理和維護是非常重要的。
(1)傳統(tǒng)日志與更新日志并存。傳統(tǒng)的日志用于定期記錄MySQL服務器運行信息,包括用戶的連接、查詢和其他事件。更新日志用于記錄修改數(shù)據庫查詢的信息,常規(guī)日志和更新日志在默認情況下不啟用。
(2)在服務器錯誤日志信息中,包含了寫入標準錯誤輸出設備的所有消息,也包含了MySQL服務啟動和關閉事件信息。錯誤日志序列號,根據實用程序安全MySQLd進程,所以在通過調用安全MySQLd時啟動MySQL服務,錯誤日志將會一直存在。默認情況下,錯誤日志并非儲存在MySQL數(shù)據目錄中,而是在配置文件/ etc /中,一般CNF為/ var / log / MySQLd日志。
5 MySQL內存信息管理
(1)多表連接操作。MySQL使用內存塊用于連接操作,減少連接所涉及的表讀取“驅動”數(shù)量,來提高連接操作速度,其中需要使用加入緩沖來幫助完成連接操作。當加入緩沖區(qū)太小時候,MySQL將緩沖到磁盤文件,但結果集須從joinbuffer加入操作,需要運行連接表,然后清空緩沖區(qū)加入,繼續(xù)將其余的結果集寫入緩沖區(qū)。所以加入緩沖尺寸,可以增加訪問的IO速度。加入的緩存類型為全表掃描,索引掃描,以及有效的索引范圍掃描,但是在其他情況下不使用緩存。
(2)線程堆棧信息管理。對于每個線程自己的符號信息,如基本信息的線程ID,線程運行ID等。對于每個線程堆棧,可以使用線程堆棧分配多少內存。
(3)確認使用內存。MySQL可以在內存對客戶機的請求應答、排序,如果緩存大小不能滿足實際需要,需要進行內存需求排序,MySQL會調用數(shù)據進程,寫入磁盤文件完成排序,所以需要經常進行查詢請求排序,其中sort_buffer_size參數(shù)設置對性能的影響是非常大的。
(4)讀取數(shù)據緩沖區(qū)。內存的這一部分,主要針對用戶內存讀取數(shù)據操作,例如不能使用索引的全表掃描,類全掃描等。MySQL數(shù)據存儲,需要根據數(shù)據讀取相應的數(shù)據塊,將臨時數(shù)據塊緩沖區(qū)進行讀取。當緩沖區(qū)空間已滿或所有的數(shù)據讀取完畢,將緩沖區(qū)數(shù)據返回給調用者的頂部,這樣可以提高效率。
6 MySQL用戶和權限管理
MySQL提供了一個非常有用的訪問控制系統(tǒng),用于管理和控制用戶使用的主機名、用戶名和密碼。它可以連接到指定的數(shù)據庫服務器,可以打開數(shù)據庫,可以進行及時讀取、添加、修改和刪除操作。MySQL權限系統(tǒng)的使用,確保所有用戶可以嚴格按照預設分布,進行良好的對數(shù)據庫的安全訪問操作。
(1)請求與驗證環(huán)節(jié)。這一環(huán)節(jié)中,系統(tǒng)將檢查每個MySQL權限,根據用戶給出的操作數(shù)據庫請求,來確定該用戶是否具有足夠的權限,來執(zhí)行安全操作。
(2)連接與驗證環(huán)節(jié)。主要是確定用戶的身份,根據這兩個信息,判斷從哪個主機連接和使用哪些MySQL注冊用戶。用戶表在數(shù)據庫MySQL連接時進行認證,用戶需要使用系統(tǒng)主機、用戶名和密碼完成相關操作。
7 總結
本文立足于linux環(huán)境下MySQL數(shù)據存儲管理策略,從相關背景出發(fā),研究了MySQL下的各個板塊的存儲管理原理和技術,包括程序管理、數(shù)據維護管理、日志文件管理、用戶和權限管理、內存管理等。本次研究在當今MySQL地位日益提升的背景下,顯得尤為重要。
參考文獻:
[1]羅凡,裴士輝,張雪松,等.MySQL中InnoDB 引擎的動態(tài)存儲管理[J].東北師大學報(自然科學版),2006,38(1).
[2]顧治華,忽朝儉.MySQL存儲引擎與數(shù)據庫性能[J].計算機時代,2006,10:8-10.
[3]鮑文,李冠宇.本體存儲管理技術研究綜述[J].中國科技論文在線,2007.
[4]石夫乾,周林.一種基于 NAS 的網絡存儲管理軟件的設計與應用[J].電腦知識與技術,2006,3.
作者單位:江蘇省海門中等專業(yè)學校,江蘇海門 226100