Mysqldump建立的轉儲文件本來是無害的,但它很容易被嘗試去編輯。然而,人們應該知道在任何狀況下的試圖修改這些文件被證實是有危險的。直觀地看對這些文件的改動會致使數據庫損壞,從而致使系統的退化。爲了讓你的系統免受任何麻煩,你必須避免編輯MySQL轉儲文件。mysql
大多數開發者忘記了這一事實,文件系統每每須要一個大的MyISAM塊以保證高效運行。許多開發者不知道塊大小的設置。.MYI文件存儲在myisam_block_size的設置裏,這個設置項可用來修改大的塊尺寸。MyISAM塊大小的默認值是1K,這不是當前大多數系統的恰當設置。所以,開發者應該考慮指定一個與之相適應的值。sql
爲避免系統崩潰時數據庫損壞delay_key_write默認是關閉的。有人可能會問,若是是這樣的話,爲何要把它放在首位打開呢?從防止數據庫每次寫MyISAM文件時刷新密鑰文件方面看這是必要的。經過把它打開,開發者能夠節省不少時間。參考MySQL官方手冊瞭解你的版本如何把它打開。數據庫
建立索引和使用相同的列類型:join(錶鏈接)操做能夠在Mysql中被優化。若應用中有許多join操做,能夠經過建立相同的列類型上join來優化。建立索引是加速應用的另外一種方法。查詢修改有助於你找回指望的查詢結果。緩存
即便你只搜索一行MySQL也會查詢整個表,所以,建議你當只須要一條結果時將limit設置爲1。經過這樣作,能夠避免系統貫穿搜索整個表,從而能夠儘量快找到與你需求相匹配的記錄。工具
你確定但願獲得與任何特定查詢相關的一些幫助。Explain關鍵詞在這方面是很是有幫助的。它在你尋求查詢到底作了什麼時提供了具體細節。例如,在複雜join查詢前鍵入Explain關鍵詞你會獲得不少有用的資料。性能
MySQL的查詢緩存是默認啓用的。這主要是由於緩存有助於查詢的快速執行,緩存能夠在相同的查詢屢次運行使用。你在關鍵字前加入當前日期、CURRDATE等PHP代碼使查詢緩存它從而啓用此功能。優化
各類Bug可使用stack_trace隔離出來。一個空指針足以毀掉一段特定的代碼,任何開發人員都知道它有這樣的能力。瞭解使用堆棧跟蹤的細節,從而在你的代碼裏避免bug。ui
枚舉類型老是讓人感到很是的疑惑。因爲字段可能擁有多個可能的值,這些可能的值包括你指定的和null,在編碼時將會出現不少問題,你將永遠都會獲得一個警告說代碼不正確。一個簡單的解決辦法就是設置SQL_MODE。編碼
1
2
3
4
5
6
7
8
|
//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密碼對於某些特定設置是必不可少的,修改命令以下:spa
1
|
$mysqladmin -u root
password
[Type
in
selected
password
]
|
開發者都知道數據庫備份的重要性,當系統出現重大故障時可以起到救命的做用。
1
|
$mysqldump –
user
[
user
name
] –
password
=[
password
] [
database
name
] > [dump file]
|
//你也能夠用簡寫"-u","-p"來分別代替"user"和"password"
//將多個數據庫導入到一個文件只要在後面添加須要導出數據庫的名稱:
1
2
|
mysqldump –
user
[
user
name
] –
password
=[
password
]
[
first
database
name
] [
second
database
name
] > [dump file]
|
//許多數據庫都提供了順序備份的功能,要備份全部數據庫只須要添加--all-databases參數。若是你不喜歡命令行,從Sourceforge上下載automysqlbackup吧。
PERL腳本MySQL Tuner是另外一個強大的優化數據庫性能的工具,它可以幫助你對MySQL配置來進行多處調整和修改。你能夠訪問該項目的官網來進一步瞭解它。