2007年10月7日 星期日

MySQL 交易transaction功能

可再參考最新整理:MySQL 交易功能 Transaction 整理

需使用InnoDB資料表

InnoDB不支持全文檢索fulltext search
所以若從MyISAM 轉 InnoDB ,需刪除刪掉有關 Fulltext 的索引

AppServ的MySQL啟用InnoDB支援,my.ini中將
#skip-innodb
註解

InnoDB 中文參考手冊
http://www.twbb.org/ebook/MYSQL_INNDB_BIG5/

http://www.php5.idv.tw/documents/mysql4tw/06-7.html#SET_TRANSACTION
http://phorum.study-area.org/viewtopic.php?t=27865&start=0&postdays=0&postorder=asc&highlight=&sid=356df1e09a5603fec2881c37731d3e45

php中使用MySQL交易功能
mysql_query("SET AUTOCOMMIT=0",$link);
mysql_query("BEGIN",$link);
.
.
.
mysql_query("COMMIT",$link);
當使用mysql_pconnect()持續連接時,
若最後若無COMMIT,則再下一次BEGIN依然可能COMMIT上次的資料
所以使用mysql_connect()

在交易進行當中,只有 SELECT ... FOR UPDATE 或 LOCK IN SHARE MODE 同一筆資料時會等待其它交易結束後才執行,一般 SELECT不受此影響。 InnoDB 預設為 Row-level Lock,資料列鎖定
http://www.neo.com.tw/archives/000900.html
InnoDB 表單儘量不要使用 LOCK TABLES 指令,若情非得已要使用,請先看官方對於 InnoDB 使用 LOCK TABLES 的說明,以免造成系統經常發生 Deadlock

InnoDB 啟動選項
http://www.twbb.org/ebook/MYSQL_INNDB_BIG5/2.htm#InnoDB_start

innodb_additional_mem_pool_size

沒有留言:

張貼留言