每個MySQL開發者都應該瞭解的10個技巧

oschina發表於2013-08-20

  MySQL是世界上實際最流行的資料庫管理系統,是遍佈全球程式設計社群的首選。它有一個系列有趣的特性,在很多方面都很擅長。由於其巨大的人氣,在網上可以找到許多MySQL的使用技巧。這裡有12個最好的技巧和竅門,所有MySQL資料庫開發者都應該瞭解一下。

  避免編輯轉儲檔案

  Mysqldump建立的轉儲檔案原本是無害的,但它很容易被嘗試去編輯。然而,人們應該知道在任何情況下的試圖修改這些檔案被證明是有危險的。直觀地看對這些檔案的改動會導致資料庫損壞,從而導致系統的退化。為了讓你的系統免受任何麻煩,你必須避免編輯MySQL轉儲檔案。

  MyISAM 塊大小

  大多數開發者忘記了這一事實,檔案系統往往需要一個大的MyISAM塊以保證高效執行。許多開發者不知道塊大小的設定。.MYI檔案儲存在myisam_block_size的設定裡,這個設定項可用來修改大的塊尺寸。MyISAM塊大小的預設值是1K,這不是當前大多數系統的恰當設定。因此,開發者應該考慮指定一個與之相適應的值。

  開啟 Delay_Key_Write

  為避免系統崩潰時資料庫損壞delay_key_write預設是關閉的。有人可能會問,如果是這樣的話,為什麼要把它放在首位開啟呢?從防止資料庫每次寫MyISAM檔案時重新整理金鑰檔案方面看這是必要的。通過把它開啟,開發者可以節省很多時間。參考MySQL官方手冊瞭解你的版本如何把它開啟。

  Joins(表連線)

  建立索引和使用相同的列型別:join(表連線)操作可以在Mysql中被優化。若應用中有許多join操作,可以通過建立相同的列型別上join來優化。建立索引是加速應用的另一種方法。查詢修改有助於你找回期望的查詢結果。

  優化WHERE從句

  即使你只搜尋一行MySQL也會查詢整個表,因此,建議你當只需要一條結果時將limit設定為1。通過這樣做,可以避免系統貫穿搜尋整個表,從而可以儘可能快找到與你需求相匹配的記錄。

  在Select查詢上使用Explain關鍵字

  你肯定希望得到與任何特定查詢相關的一些幫助。Explain關鍵詞在這方面是非常有幫助的。它在你尋求查詢到底做了什麼時提供了具體細節。例如,在複雜join查詢前鍵入Explain關鍵詞你會得到很多有用的資料。

  使用查詢快取優化查詢

  MySQL的查詢快取是預設啟用的。這主要是因為快取有助於查詢的快速執行,快取可以在相同的查詢多次執行使用。你在關鍵字前加入當前日期、CURRDATE等PHP程式碼使查詢快取它從而啟用此功能。

  使用堆疊跟蹤隔離Bug

  各種Bug可以使用stack_trace隔離出來。一個空指標足以毀掉一段特定的程式碼,任何開發人員都知道它有這樣的能力。瞭解使用堆疊跟蹤的細節,從而在你的程式碼裡避免bug。

  設定SQL_MODE

  列舉型別總是讓人感到非常的疑惑。由於欄位可能擁有多個可能的值,這些可能的值包括你指定的和null,在編碼時將會出現很多問題,你將永遠都會得到一個警告說程式碼不正確。一個簡單的解決辦法就是設定SQL_MODE。

//Start mysqld with
$–sql-mode=”modes”
//or
$sql-mode=”modes” (my.ini – Windows / my.cnf – Unix)
//Change at runtime, separate multiple modes with a comma
$set [GLOBAL|SESSION] sql_mode=’modes’
//TRADITIONAL is equivalent to the following modes:
STRICT_TRANS_TABLES, STRICT_ALL_TABLES, NO_ZERO_IN_DATE, ERROR_FOR_DIVISION_BY_ZERO, and NO_AUTO_CREATE_USER

  修改Root密碼

  修改root密碼對於某些特定設定是必不可少的,修改命令如下:

//Straightforward MySQL 101
$mysqladmin -u root password [Type in selected password]
//Changing users ROOT password
$mysqladmin -u root -p [type old password] newpass [hit enter and type new password. Press enter]
//Use mysql sql command
$mysql -u root -p
//prompt “mysql>” pops up. Enter:
$use mysql;
//Enter user name you want to change password for
$update user set password=PASSWORD (Type new Password Here) where User = ‘username’;
//Don’t forget the previous semicolon, now reload the settings for the users privileges
$flush privileges;
$quit

  用MySQL Dump 命令備份資料庫

  開發者都知道資料庫備份的重要性,當系統出現重大故障時能夠起到救命的作用。

  最簡單的備份資料庫的方法

$mysqldump –user [user name] –password=[password] [database name] > [dump file]

  //你也可以用簡寫"-u","-p"來分別代替"user"和"password"
  //將多個資料庫匯入到一個檔案只要在後面新增需要匯出資料庫的名稱:

mysqldump –user [user name] –password=[password] 
[first database name] [second database name] > [dump file]

  //許多資料庫都提供了順序備份的功能,要備份所有資料庫只需要新增--all-databases引數。如果你不喜歡命令列,從Sourceforge上下載automysqlbackup吧。

  調整CONFIG的配置

  PERL指令碼MySQL Tuner是另一個強大的優化資料庫效能的工具,它能夠幫助你對MySQL配置來進行多處調整和修改。你可以訪問該專案的官網來進一步瞭解它。

  英文原文:10-useful-tricks-every-mysql-database-developer-must-consider

相關文章