《MySQL必知必會》筆記事務、安全及效能等

範大腳腳發表於2017-11-13

 二十六 管理事務處理

1.並非所有引擎都支援事務處理,如MyIASM和InnoDB,關於事務處理的幾個術語:
事務(Transaction)指一組sql語句;
回退(rollback)指撤銷指定SQL語句的過程;
提交(commit)指將為儲存的SQL語句結果寫入資料庫表;
保留點(savepoint)指事務處理中設定的臨時佔位符(placeholder),可以對它釋出回退。

2.管理事務處理的關鍵在於將SQL語句組分解為邏輯塊,並明確規定資料何時應該回退,何時不應該回退

3.MySQL使用如下標誌事務的開始:
START TRANSACTION

ROLLBACK用來回退MySQL語句。

如:

SELECT * FROM ordertotals;//顯示該表不為空
START TRANSACTION;//開始事務
DELETE FROM ordertotals;//刪除全部資料
ROLLBACK;//回退
SELECT * FROM ordertotals;//顯示該表不空

事務處理用來管理INSERT/UPDATE/DELETE語句,不能回退CREATE/DROP操作,當然還有SELECT;



4.使用COMMIT,一般的MySQL語句都是直接針對資料庫表執行和編寫的,即所謂的隱含提交(implicit commit),

提交操作室自動的。在事務處理中,提交不會隱含的進行。

如:

START TRANSACTION;
DELETE FROM orderitems WHERE order=20010DELETE FROM orders WHERE order_num=20010;
commit;

注意“隱含事務關閉”。

5.使用保留點。

如:SAVEPOINT delete1;

ROLLBACK TO delete1;

保留點越多越好,在事務處理完成後保留點可以自動釋放。

6.更改預設的提交行為。為了使MySQL不自動提交更改,

可以:

SET autocommit=0;//直到被重新設定為真為止。

注意 autocommit 標誌是針對每個連線而不是伺服器的。

 

三十 改善效能

1.遵循MySQL的硬體建議

2.使用過程中可能需要調優,檢視當前設定,可以使用SHOW VARIABLES;SHOW STATUS等;

3.MySQL是一個對使用者多執行緒的DBMS,如果多工中的某一個執行緩慢,會影響所有請求的執行,

SHOW PROCESSLIST;

可以顯示所有活動程式,進而執行KILL操作;

4.總是有不止一種方法編寫同一條SELECT語句;

5.使用EXPLAIN語句讓MySQL解釋如何執行一條SQL語句;

6.一般來說,儲存過程要比執行獨立的各條SQL語句要快;



7.應該總是使用正確的資料型別;絕不要檢索必需求還多的資料。換言之,不要使用select *(除非你真正需要某個列);

8.某些操作支援可選的DELAYED關鍵字,如果使用它,將把控制立即返回給呼叫程式,並且一旦有可能就實際執行該操作,即延遲插入;

9.在匯入資料時,應該關閉自動提交。也可以刪除索引,在匯入完成後再重建;

10.必須索引資料庫表以改善資料檢索的效能。如果一個簡單的WHERE子句返回結果的時間過長,則可以斷定其中幾個列是需要索引的物件;

11.SELECT不應該使用過多的OR條件,使用UNION連線子句代替,會看到極大的效能改善;

12.索引改善資料檢索的效能,但損害資料插入、刪除和更新的效能。如果某些表收集資料但是不經常被檢索,在這之前不應該索引它們;

13.LIKE很慢,最好使用FULLTEXT代替;

14.最重要的規則是,每條規則在某些條件下都會被打破。

本文轉自邴越部落格園部落格,原文連結:http://www.cnblogs.com/binyue/p/3721246.html,如需轉載請自行聯絡原作者


相關文章