為存儲引擎添加對INSERT的支持 |
發(fā)布時間: 2012/8/23 16:51:04 |
一旦在你的存儲引擎中有了讀支持,下一個需要實施的特性是對INSERT語句的支持。有了INSERT支持,存儲引擎就能處理WORM(寫一次,讀多次)應用程序,如用于以后分析的日志和歸檔應用等。 電腦維護www.boydavid.com 所有的INSERT操作均是通過write_row()函數(shù)予以處理的:電腦知識www.boydavid.com int ha_foo::write_row(byte *buf)
*buf參數(shù)包含將要插入的行,采用內(nèi)部MySQL格式。基本的存儲引擎將簡單地前進到數(shù)據(jù)文件末尾,并直接在末尾處添加緩沖的內(nèi)容,這樣就能使行讀取變得簡單,這是因為,你可以讀取行并將其直接傳遞到rnd_next()函數(shù)的緩沖參數(shù)中。 電腦入門www.boydavid.com 寫入行的進程與讀取行的進程相反:從MySQL內(nèi)部行格式獲取數(shù)據(jù),并將其寫入數(shù)據(jù)文件。下述示例來自CSV存儲引擎: 電腦常識www.boydavid.com int ha_tina::write_row(byte * buf) 電腦技術www.boydavid.com
{
int size;
DBUG_ENTER("ha_tina::write_row");
statistic_increment(table->in_use->status_var.ha_write_count, &LOCK_status);
if (table->timestamp_field_type & TIMESTAMP_AUTO_SET_ON_INSERT)
table->timestamp_field->set_time();
size= encode_quote(buf);
if (my_write(share->data_file, buffer.ptr(), size, MYF(MY_WME | MY_NABP)))
DBUG_RETURN(-1);
if (get_mmap(share, 0) > 0)
DBUG_RETURN(-1); 電腦技術www.boydavid.com
DBUG_RETURN(0);
}
前述示例中的兩條注釋包括,更新關于寫入操作的表統(tǒng)計,以及在寫入行之前設置時間戳。 本文出自:億恩科技【www.cmtents.com】 |