PHP程序員如何做好MySQL數據庫優化

1.使用MyISAM而不是InnoDB

MySQL有很多數據庫引擎,但是你最可能碰到的就是MyISAM和InnoDB。 MySQL默認使用的是MyISAM。但是,很多情況下這都是一個很糟糕的選擇,除非你在創建一個非常簡單抑或實驗性的數據庫。

外鍵約束或者事務處理對於數據完整性是非常重要的,但MyISAM都不支持這些。另外,當有一條記錄在插入或者更新時,整個數據表都被鎖定了,當使用量增加的時候這會產生非常差的運行效率。 結論很簡單:使用InnoDB。

2.使用PHP的mysql函數

PHP 自產生之日就提供了MySQL庫函數(or near as makes no difference)。很多應用仍然在使用類似mysql_connect、mysql_query、mysql_fetch_assoc等的函數,盡 管PHP手冊上說:如果你在使用MySQL v4.1.3或者更新版本,強烈推薦使用您使用mysql展。

mysqli(MySQL的加強版擴展)有以下幾個優點:

可選的面向對象接口

prepared表達式,這有利於阻止SQL注入攻擊,還能提高性能

支持更多的表達式和事務處理

另外,如果你想支持多種數據庫系統,你還可以考慮PDO。

3.沒有處理用戶輸入

這或者可以這樣說#1:永遠不要相信用戶的輸入。用服務器端的PHP驗證每個字符串,不要寄希望與JavaScript。

最簡單的SQL注入攻擊會利用如下的代碼:

$username = $_POST[''name'']; $password = $_POST[''password'']; $sql = ''SELECT userid FROM usertable WHERE username='$username' AND password='$password';''; // run query...

只要在username字段輸入“admin';--”,這樣就會被黑到,相應的SQL語句如下:

SELECT userid FROM usertable WHERE username='admin';

狡猾的黑客可以以admin登錄,他們不需要知道密碼,因爲密碼段被註釋掉了

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章