MySQL開發者都應該了解的12個技巧

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

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

2、MyISAM 塊大小

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

3、打開 Delay_Key_Write

為避免系統崩潰時數據庫損壞delay_key_write默認是關閉的。有人可能會問,如果是這樣的話,為什麼要把它放在首位打開呢?從防止數據庫每次寫MyISAM文件時刷新密鑰文件方面看這是必要的。通過把它打開,開發者可以節省很多時間。參考MySQL官方手冊瞭解你的版本如何把它打開。

4、Joins(表連接)

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

5、優化WHERE從句

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

6、在Select查詢上使用Explain關鍵字

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

7、使用查詢緩存優化查詢

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

8、使用堆棧跟蹤隔離Bug

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

9、設置SQL_MODE

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

// 用以下參數啟動mysqld

$–sql-mode=”modes”

// 或者在my.ini或 my.cnf 裡面設置如下選項

$sql-mode=”modes”

// 也可以在運行時直接設置,使用逗號分隔模式

$set [GLOBAL|SESSION] sql_mode=’modes’

// TRADITIONAL 模式等價於下列模式:STRICT_TRANS_TABLES, STRICT_ALL_TABLES,

// NO_ZERO_IN_DATE, ERROR_FOR_DIVISION_BY_ZERO 和 NO_AUTO_CREATE_USER

10、修改Root密碼

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

// 使用mysqladmin的password命令來修改(4.1格式)

$mysqladmin -u root password [新口令]

// 舊的修改口令的方法

$mysqladmin -u root -p [舊口令] 新口令 [敲回車後輸入新口令,然後回車]

// 使用mysql的命令

$mysql -u root -p

mysql> use mysql;

mysql> update user set password=新口令 where User = ‘用戶名’;

mysql> flush privileges;

mysql> quit

11、用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吧。

12、調整CONFIG的配置

perl腳本MySQL Tuner ( http://mysqltuner.com/‎ )是另一個強大的優化數據庫性能的工具,它能夠幫助你對MySQL配置來進行多處調整和修改。你可以訪問該項目的官網來進一步瞭解它。


分享到:


相關文章: