一、redo log和undo log以及bin log的生成流程
1.undolog是在innodb的回滾段里的(確切是rollback segment->undo segment),這個(gè)也是buffer pool的一部分。你所說(shuō)的同步到buffer pool,實(shí)際是包含了插入undolog的過(guò)程(同樣,flush to disk也需要把undo log寫(xiě)入磁盤(pán))。
2.redolog不保證不丟失數(shù)據(jù),只保證數(shù)據(jù)原子性。即保障經(jīng)過(guò)redolog寫(xiě)入的數(shù)據(jù)是原子的。這個(gè)地方你是可以通過(guò)innodb_flush_log_at_trx_commit去修改,默認(rèn)這里是1,也就是說(shuō)每次寫(xiě)redolog的時(shí)候都會(huì)直接調(diào)用fsync要求落盤(pán),那就不存在你說(shuō)的問(wèn)題了(應(yīng)該說(shuō)是在處理用戶請(qǐng)求的過(guò)程里如果宕機(jī)就會(huì)丟失數(shù)據(jù))。當(dāng)然你也可以設(shè)置為0或者2把日志落盤(pán)這件事交給單獨(dú)的線程去處理。
至于順序是:修改數(shù)據(jù)(這個(gè)包含了undolog)->修改redolog(prepare)->修改binlog(同時(shí)設(shè)置redo-log事務(wù)狀態(tài)為commit)。因?yàn)镮nnodb本身實(shí)現(xiàn)的復(fù)雜性,這里面每個(gè)部分都涉及非常多的操作。
關(guān)于 MySQL 不將每次操作都同步到磁盤(pán),而是同步到 buffer pool 中的疑惑,是因?yàn)?buffer pool 是內(nèi)存中的緩存區(qū)域,相比磁盤(pán)來(lái)說(shuō)讀取速度更快,可以提高數(shù)據(jù)庫(kù)性能。而 undo log 存儲(chǔ)的是舊數(shù)據(jù)的備份,這樣即使出現(xiàn)宕機(jī)等問(wèn)題,也可以通過(guò) undo log 來(lái)恢復(fù)事務(wù)處理之前的數(shù)據(jù)狀態(tài)。
redo log 的作用是記錄數(shù)據(jù)的修改,包括增加、修改、刪除等,即使發(fā)生異常宕機(jī)等情況也可以通過(guò) redo log 來(lái)進(jìn)行數(shù)據(jù)恢復(fù)。而 MySQL 在執(zhí)行事務(wù)的過(guò)程中,會(huì)將 redo log 緩存在內(nèi)存中的 redo log buffer 中,在事務(wù)提交時(shí)才將其寫(xiě)入磁盤(pán)的 redo log 文件中,所以在宕機(jī)等異常情況下,有可能會(huì)丟失部分?jǐn)?shù)據(jù),但是通過(guò) redo log 可以盡可能地減少數(shù)據(jù)丟失的風(fēng)險(xiǎn)。因此,在生產(chǎn)環(huán)境中,為了保證數(shù)據(jù)的安全性和完整性,需要合理地配置 redo log 大小以及定期將數(shù)據(jù)寫(xiě)回磁盤(pán)中。
延伸閱讀:
二、信息抽取是什么
信息抽取(infromation extraction)信息抽取是一種自動(dòng)化地從半結(jié)構(gòu)化和無(wú)結(jié)構(gòu)數(shù)據(jù)中抽取實(shí)體、關(guān)系以及實(shí)體屬性等結(jié)構(gòu)化信息的技術(shù)。關(guān)鍵技術(shù)包括:實(shí)體抽取、關(guān)系抽取和屬性抽取。
1、實(shí)體抽取,也稱為命名實(shí)體識(shí)別(named entity recognition,NER),是指從文本數(shù)據(jù)集中自動(dòng)識(shí)別出命名實(shí)體。
當(dāng)前主流技術(shù)為面向開(kāi)放域(open domain)的實(shí)體抽取。
2、關(guān)系抽取,為了得到語(yǔ)義信息,從相關(guān)語(yǔ)料中提取出實(shí)體之間的關(guān)聯(lián)關(guān)系,通過(guò)關(guān)系將實(shí)體聯(lián)系起來(lái),才能夠形成網(wǎng)狀的知識(shí)結(jié)構(gòu)。其技術(shù)研究已經(jīng)從早期的“人工構(gòu)造語(yǔ)法和語(yǔ)義規(guī)則”(模式匹配),“統(tǒng)計(jì)機(jī)器學(xué)習(xí)”發(fā)展到“面向開(kāi)放域的信息抽取方法”與“面向封閉領(lǐng)域的方法”相結(jié)合。
3、屬性抽取,目標(biāo)是從不同信息源中采集特定實(shí)體的屬性信息,如針對(duì)某個(gè)公眾人物,可以從網(wǎng)絡(luò)公開(kāi)信息中得到其昵稱、生日、國(guó)籍、教育背景等信息。采用數(shù)據(jù)挖掘的方法直接從文本中挖掘?qū)嶓w屬性和屬性值之間的關(guān)系模式,據(jù)此實(shí)現(xiàn)對(duì)屬性名和屬性值在文本中的定位。