打開表 |
發布時間: 2012/8/23 17:25:37 |
在表上執行任何讀或寫操作之前,MySQL服務器將調用open()方法打開表數據和索引文件(如果存在的話)。
int open(const char *name, int mode, int test_if_locked);
第1個參數是要打開的表的名稱。第2個參數確定了要打開的文件或準備執行的操作。它們的值定義于handler.h中,并為了方便起見列在下面:
#define HA_OPEN_KEYFILE 1
#define HA_OPEN_RNDFILE 2
#define HA_GET_INDEX 4
#define HA_GET_INFO 8 /* do a ha_info() after open */ 電腦軟件www.boydavid.com
#define HA_READ_ONLY 16 /* File opened as readonly */ 電腦軟件www.boydavid.com
#define HA_TRY_READ_ONLY 32 /* Try readonly if can't open with read and write */
#define HA_WAIT_IF_LOCKED 64 /* Wait if locked on open */
#define HA_ABORT_IF_LOCKED 128 /* skip if locked on open.*/
#define HA_BLOCK_LOCK 256 /* unlock when reading some records */
#define HA_OPEN_TEMPORARY 512 電腦軟件www.boydavid.com
最后一個選項規定了是否要在打開表之前檢查表上的鎖定。
在典型情況下,存儲引擎需要實施某種形式的共享訪問控制,以防止在多線程環境下的文件損壞。關于如何實施文件鎖定的示例,請參見sql/examples/ha_tina.cc的get_share()和free_share()方法。 本文出自:億恩科技【www.endtimedelusion.com】 |