mysql prepare statement(mysql預處理)

一.介紹

預處理的意思是先提交sql語句到mysql服務端,執行預編譯,客戶端執行sql語句時,只需上傳輸入參數即可。
從 5.1開始,mysql支持服務器端的Prepared Statements,他使用在client/server更有優勢的binary protocol。(mysql的傳統的協議中,在把數據通過網絡傳輸前,需要把一切數據都轉換成strings,這樣就比原始數據大很多,最後,在服務器端,還必須把string轉化成正確的數據格式而binary protocol去除了轉換的開銷,在被傳輸前,所有類型都轉換成本地的binary類型,這樣就減少了cpu轉換的開銷跟網絡的使用)
二.實例
mysql> PREPARE stmt1 FROM 'SELECT SQRT(POW(?,2) + POW(?,2)) AS hypotenuse';
mysql> SET @a = 3;
mysql> SET @b = 4;
mysql> EXECUTE stmt1 USING @a, @b;
+————+
| hypotenuse |
+————+
| 5 |
+————+
mysql> DEALLOCATE PREPARE stmt1;
三.Prepared Statements優點
1.安全
Prepared Statements通過sql邏輯與數據的分離來增加安全,sql邏輯與數據的分離能防止普通類型的sql注入***(SQL injection attack)。
2.性能
Prepared Statements只語法分析一次,你初始話Prepared Statements時,mysql將檢查語法並準備語句的運行,當你執行query 多次時,這樣就不會在有額外的負擔了,如果,當運行query 很多次的時候(如:insert)這種預處理有很大的性能提高
他使用binary protocol協議,這樣更能提高效率。
四.參考文獻

 

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