為存儲(chǔ)引擎添加對INSERT的支持 |
發(fā)布時(shí)間: 2012/8/23 16:51:04 |
一旦在你的存儲(chǔ)引擎中有了讀支持,下一個(gè)需要實(shí)施的特性是對INSERT語句的支持。有了INSERT支持,存儲(chǔ)引擎就能處理WORM(寫一次,讀多次)應(yīng)用程序,如用于以后分析的日志和歸檔應(yīng)用等。 電腦維護(hù)www.boydavid.com 所有的INSERT操作均是通過write_row()函數(shù)予以處理的:電腦知識(shí)www.boydavid.com int ha_foo::write_row(byte *buf)
*buf參數(shù)包含將要插入的行,采用內(nèi)部MySQL格式。基本的存儲(chǔ)引擎將簡單地前進(jìn)到數(shù)據(jù)文件末尾,并直接在末尾處添加緩沖的內(nèi)容,這樣就能使行讀取變得簡單,這是因?yàn)椋憧梢宰x取行并將其直接傳遞到rnd_next()函數(shù)的緩沖參數(shù)中。 電腦入門www.boydavid.com 寫入行的進(jìn)程與讀取行的進(jìn)程相反:從MySQL內(nèi)部行格式獲取數(shù)據(jù),并將其寫入數(shù)據(jù)文件。下述示例來自CSV存儲(chǔ)引擎: 電腦常識(shí)www.boydavid.com int ha_tina::write_row(byte * buf) 電腦技術(shù)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); 電腦技術(shù)www.boydavid.com
DBUG_RETURN(0);
}
前述示例中的兩條注釋包括,更新關(guān)于寫入操作的表統(tǒng)計(jì),以及在寫入行之前設(shè)置時(shí)間戳。 本文出自:億恩科技【www.allwellnessguide.com】 服務(wù)器租用/服務(wù)器托管中國五強(qiáng)!虛擬主機(jī)域名注冊頂級(jí)提供商!15年品質(zhì)保障!--億恩科技[ENKJ.COM] |