每個MySQL開發者都應該瞭解的10個技巧
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
相關文章
- 每個Android開發者都應該瞭解的資源列表Android
- 每個 Java 開發者都應該知道的 5 個註解Java
- 每個PHP開發者都應該看的書PHP
- 每個開發者都應該知道的33個JavaScript概念JavaScript
- 每個Linux使用者都應該瞭解的命令列省時技巧Linux命令列
- 每個安卓開發初學者應該瞭解的 12 個技巧安卓
- 每個Java開發者都應該知道的5個JDK工具JavaJDK
- [譯]每個 iOS 開發者都該知道的 17 個 Xcode 小技巧iOSXCode
- 每個工程師都應該瞭解的:聊聊冪等工程師
- 每一個JavaScript開發者應該瞭解的浮點知識JavaScript
- 每個前端工程師都應該瞭解的HTML5.2前端工程師HTML
- 每個JavaScript開發人員都應該瞭解UnicodeJavaScriptUnicode
- 每個 JavaScript 開發者都該瞭解的 ES2018 新特性JavaScript
- 重要!每個開發者都應該掌握的9個核心演算法演算法
- 每個前端工程師都應該瞭解的圖片知識前端工程師
- 每個程式設計師都應該瞭解的硬體知識程式設計師
- 好的web開發者應該10個技巧Web
- 每個 Linux 新手都應該知道的 10 個命令Linux
- 每個C++開發者都應該使用的十個C++11特性C++
- 每個程式設計師都應該瞭解的記憶體知識程式設計師記憶體
- 每個開發者都應該使用的VSCode外掛 - tvkoushikVSCode
- 每個Python新手都應該知道的程式設計技巧Python程式設計
- 為什麼每個Android開發者都應該使用AnkoAndroid
- 每個程式設計師都應該瞭解的一件事程式設計師
- 每個Linux使用者都應該知道的命令列技巧Linux命令列
- 每個Web開發者都應該知道的關 URL編碼的知識Web
- 每個程式設計師都應該瞭解的“虛擬記憶體”知識程式設計師記憶體
- 每個開發人員都應該知道的 10 個 GitHub 倉庫Github
- [譯] 為什麼每個 Android 開發者都應該嘗試 FlutterAndroidFlutter
- 你應該瞭解的 5 個 JavaScript 除錯技巧JavaScript除錯
- 每個Javascript開發者都應當知道的那些事JavaScript
- IT職場:每個黑帶都應該知道的事
- 每個後端都應該瞭解的OpenResty入門以及閘道器安全實戰後端REST
- 10個應該瞭解的Ruby技術
- 每個Android迷都應該使用的75個超酷AppAndroidAPP
- 求職季 | 為什麼每個開發者都應該堅持經營一個部落格?求職
- 你應該瞭解的 7個Linux ls 命令技巧Linux
- 每個極客都應該知道的Linux技巧Linux