Oracle架構(gòu)實現(xiàn)原理 --轉(zhuǎn)載

參考:Oracle架構(gòu)實現(xiàn)原理兼吓、含五大進(jìn)程解析(圖文詳解)

一.Oracle RDBMS架構(gòu)圖

Oracle RDBMS架構(gòu)圖

Oracle指的是Oracle RDBMS(Relational databases Management system)染苛,一套Oracle數(shù)據(jù)庫管理系統(tǒng)夺刑,也稱之為Oracle Server。而Oracle Server主要有兩大部分:

Oracle Server = 實例 + 數(shù)據(jù)庫 (Instance和Database是相互獨立的)

  • 數(shù)據(jù)庫 = 數(shù)據(jù)文件 + 控制文件 +日志文件
  • 實例 = 內(nèi)存池 + 后臺進(jìn)程

所以可以細(xì)分為: Oracle Server = 內(nèi)存池 + 后臺進(jìn)程 + 數(shù)據(jù)文件 + 控制文件 + 日志文件

一臺Oracle Server支持創(chuàng)建多個Database睡陪,而且每個Datacase是互相隔離而獨立的。不同的Database擁有屬于自己的全套相關(guān)文件,例如:有各自的密碼文件岗仑,參數(shù)文件,數(shù)據(jù)文件莹规,控制文件和日志文件。
Database由一些物理文件(如:存放在存儲設(shè)備中的二維表文件)組成良漱。二維表存儲在Database中,但Database的內(nèi)容不能被用戶直接讀取欢际,用戶必須通過Oracle instance才能夠訪問Database母市,一個Instance只能連接一個Database,但是一個Database可以被多個Instance連接损趋。
將上面的Oracle RDBMS架構(gòu)圖進(jìn)行抽象分類患久,可以將Oracle架構(gòu)抽象為:Oracle體系 = 內(nèi)存結(jié)構(gòu) + 進(jìn)程結(jié)構(gòu) + 存儲結(jié)構(gòu)

Oracle組成分布

二.內(nèi)存結(jié)構(gòu)

Oracle Instance是Oracle RDBMS的核心之一,負(fù)責(zé)RDBMS的管理功能浑槽。Oracle Instance主要由內(nèi)存池SGA和后臺進(jìn)程組成蒋失。

系統(tǒng)全局區(qū)SGA

系統(tǒng)全局區(qū)分布

SGA(System Global Area)是與Oracle性能關(guān)系最大的核心部分,也是對Oracle進(jìn)行調(diào)優(yōu)的主要考量桐玻。SGA內(nèi)存池會在Instance啟動時被分配篙挽,在Instance關(guān)閉時被釋放。在一定范圍內(nèi)镊靴,SGA可以在Instance運行時通過自動方式響應(yīng)DBA的指令铣卡。

1.高速緩存緩沖區(qū)(數(shù)據(jù)庫緩沖區(qū))

數(shù)據(jù)庫緩沖區(qū)是oracle執(zhí)行SQL語句的區(qū)域链韭。
例如在更新數(shù)據(jù)時,用戶執(zhí)行的SQL語句不會直接對磁盤上的數(shù)據(jù)文件進(jìn)行更改操作煮落,而是首先將數(shù)據(jù)文件復(fù)制到數(shù)據(jù)庫緩沖區(qū)緩存(就是說數(shù)據(jù)庫緩沖區(qū)里會存放著SQL相關(guān)數(shù)據(jù)文件副本)敞峭,再更改應(yīng)用于數(shù)據(jù)庫緩沖區(qū)緩存中這些數(shù)據(jù)塊的副本。而且數(shù)據(jù)塊副本將在緩存中保留一段時間蝉仇,直至其占用的緩沖區(qū)被另一個數(shù)據(jù)庫覆蓋為止(緩沖區(qū)Size有限)旋讹。
在查詢數(shù)據(jù)時,為了提高執(zhí)行效率轿衔,查詢的數(shù)據(jù)也要經(jīng)過緩存沉迹。建立的Session會計算出那些數(shù)據(jù)塊包含關(guān)鍵的行,并將它們復(fù)制到數(shù)據(jù)庫緩沖區(qū)中進(jìn)行緩存呀枢。此后胚股,相關(guān)關(guān)鍵行會傳輸?shù)絊ession的PGA作進(jìn)一步處理。這些數(shù)據(jù)塊也會在數(shù)據(jù)庫緩存區(qū)緩存中保留一段時間裙秋。
一般情況下琅拌,被頻繁訪問的數(shù)據(jù)塊會存在于數(shù)據(jù)庫緩沖區(qū)緩存中,從而最大程度地減少對磁盤I/O的需要摘刑。

那什么時候會將被更新的數(shù)據(jù)塊副本寫入到磁盤中的數(shù)據(jù)文件呢?

答案就是:如果在緩沖區(qū)緩存中存儲的數(shù)據(jù)塊與磁盤上的數(shù)據(jù)塊不同時进宝,那么這樣的緩沖區(qū)常稱為”臟緩沖區(qū)”,臟緩沖區(qū)中的數(shù)據(jù)塊副本就必須寫回到磁盤的數(shù)據(jù)文件中枷恕。

調(diào)優(yōu):數(shù)據(jù)庫緩沖區(qū)緩存的大小會對性能產(chǎn)生至關(guān)重要的影響党晋,具體需要多大的Size才能成為最佳配比還要結(jié)合實際的生產(chǎn)環(huán)境而言⌒炜椋總體而言可以依據(jù)以下兩點基本要求來判斷:

  1. 緩存應(yīng)足夠大未玻,以便能緩存所有被頻繁訪問的數(shù)據(jù)塊。如果緩存過小胡控,那么將導(dǎo)致磁盤I/0活動過多扳剿,因為頻繁訪問的數(shù)據(jù)塊持續(xù)從磁盤讀取,并由其他數(shù)據(jù)塊使用和重寫昼激,然后再從磁盤讀取庇绽。
  2. 但也不能太大,以至于它會將極少被訪問的塊也一并加入到緩存中橙困,這樣會增長在緩存中搜索的時間瞧掺。

數(shù)據(jù)庫緩沖區(qū)緩存在Instance啟動時被分配。從數(shù)據(jù)庫9i開始凡傅,可以隨時將其調(diào)大或調(diào)小辟狈。可以采用手動方式重調(diào)像捶,也可以根據(jù)工作負(fù)荷自動重調(diào)大小(事務(wù))上陕。

2.日志緩沖區(qū)

日志緩沖區(qū)是小型的桩砰、用于短期存儲將寫入到磁盤上的重做日志的變更向量的臨時區(qū)域。主要作用是提供更加快的日志處理效率释簿。

3.共享池

共享池的大小也對性能產(chǎn)生重要影響

  1. 它應(yīng)該足夠大亚隅,以便緩存所有頻繁執(zhí)行的代碼和頻繁訪問的對象定義。如果共享池過小庶溶,則性能下降煮纵,因為服務(wù)器會話將反復(fù)搶奪其中的空間來分析語句,此后偏螺,這些語句會被其他語句重寫行疏,在重新執(zhí)行時,將不得不再次分析套像。如果共享池小于最優(yōu)容量酿联,則性能將下降。但有一個最小容量夺巩,如果低于此限度贞让,則語句將失敗。
  2. 但也不能過大柳譬,以至于連僅執(zhí)行一次的語句也要緩存喳张。過大的共享池也會對性能產(chǎn)生不良影響,因為搜索需要的時間過長美澳。

確定最優(yōu)容量是一個性能調(diào)整問題销部,大多數(shù)數(shù)據(jù)庫都需要一個數(shù)百MB的共享池。有些應(yīng)用程序需要1GB以上的共享池制跟,但很少有應(yīng)用程序能夠在共享池小于100MB時充分運行舅桩。

4.大型池

主要用途是供共享的服務(wù)器進(jìn)程使用。

5.JAVA池

只有當(dāng)應(yīng)用程序需要在數(shù)據(jù)庫中運行java存儲程序時雨膨,才需要java池江咳。

三.進(jìn)程結(jié)構(gòu)

進(jìn)程結(jié)構(gòu)

1.用戶進(jìn)程

用戶連接進(jìn)程是連接用戶和Oracle Instance的橋梁。只有在User與Instance建立了連接以后哥放,User才能夠?qū)racle Server進(jìn)行操作。
用戶連接進(jìn)程 = 用戶進(jìn)程 + 服務(wù)進(jìn)程 + PGA

A.用戶進(jìn)程User Process

當(dāng)一個Database User請求連接到Oracle Server時爹土,Oracle Server會創(chuàng)建User Process甥雕。

User Process的作用:

為Database User與Server Process建立連接 并不會直接與Oracle Server交互
connect連接:是User和Server Process之間的通信通道。

服務(wù)器進(jìn)程和用戶進(jìn)程

B.Server Process服務(wù)進(jìn)程

用于處理Database User和Oracle Server之間的連接胀茵。
當(dāng)一個User與User Process建立了一個connect后社露,Oracle Server會創(chuàng)建一個Server Process。然后再由User Process與Server Process建立了連接之后琼娘,Server Process會通過用戶提交的請求信息來確定與oracle instance建立一個會話峭弟。

Server Process的作用:

與Oracle Server直接交互 復(fù)制執(zhí)行和返回結(jié)果

C.Session會話

一個用戶通過User Process(本質(zhì)是通過Server Process)與Oracle Instance建立連接后稱之為一個會話附鸽,一個用戶可以建立多個會話,即同時使用同一個用戶可以多次的連接到同一個實例瞒瘸,也就是說多個session可以使用同一個connect坷备。

會話

2.程序全局區(qū)PGA

程序全局區(qū)

PGA:Oracle Server Process分配來專門用于當(dāng)前User Session的內(nèi)存區(qū)。該區(qū)域是私有的情臭,不同的用戶擁有不同的PGA省撑。

PGA包含了Server Process數(shù)據(jù)和控制信息的內(nèi)存區(qū)域。俯在,由下列3個部分組成:

  1. 椌癸空間:存儲Session的變量、數(shù)組等的內(nèi)存空間跷乐。
  2. Session Info:如果運行的不是多線程服務(wù)器肥败,會話信息將保存在PGA中,如果是多線程服務(wù)器愕提,則保存在SGA中馒稍。
  3. 私有SQL區(qū):用來保存綁定變量(binding variables)和運行時緩沖區(qū)(runtime buffers)等信息。

Oracle的connect連接和session會話與User Process緊密相關(guān)

注意:在RDBMS中由db_name和instance_name共同確定一個Database揪荣,所以Instance_name被用于Oracle與OS之間的聯(lián)系同時也被用于Oracle Server與外部連接時使用赊堪。

所以在User提交連接請求的時候衅鹿,User Process首先會與Server Process建立Connect,然后Server Process會通過請求中所包含的db_name和Instance_name來確定需要且可以被連接的數(shù)據(jù)庫(RDBMS可以存在多個數(shù)據(jù)庫),這樣就確保了RDBMS在擁有多個數(shù)據(jù)庫的情況下硼婿,還能夠保證每一個Database的獨立性。而且同一個Database可以被多個屬于這個Databse的不同用戶發(fā)起的Instance連接敦锌。這一個功能是非常有必要的您机,因為每一個不同的數(shù)據(jù)庫中都包含有同名的sys、system等系統(tǒng)用戶脖祈。

四.后臺進(jìn)程

后臺進(jìn)程主要是完成數(shù)據(jù)庫管理任務(wù) 肆捕,后臺進(jìn)程是Oracle Instance和Oracle Database的聯(lián)系紐帶,分為核心進(jìn)程和非核心進(jìn)程盖高。

1. 核心進(jìn)程:核心進(jìn)程慎陵,必須存在,有一個終止喻奥,所有數(shù)據(jù)庫進(jìn)程全部終止席纽,實例崩潰!其中五大進(jìn)程全都是核心進(jìn)程。
2. 非核心進(jìn)程:完成數(shù)據(jù)庫的額外功能撞蚕,非核心進(jìn)程死亡數(shù)據(jù)庫不會崩潰!

常用的核心進(jìn)程:

常用的核心進(jìn)程

在用戶訪問數(shù)據(jù)庫時润梯,首先會提交請求,再分配SGA內(nèi)存,創(chuàng)建并啟動后臺進(jìn)程和實例纺铭,最后建立連接和會話寇钉。Oracle Server運行過程中必須啟動上面的前五個進(jìn)程。否則實例無法創(chuàng)建舶赔。

A.數(shù)據(jù)庫寫入進(jìn)程(DBWn)

數(shù)據(jù)庫寫入進(jìn)程

Server process連接Oracle后扫倡,通過數(shù)據(jù)庫寫進(jìn)程(DBWn)將數(shù)據(jù)緩沖區(qū)中的“臟緩沖區(qū)”的數(shù)據(jù)塊寫入到存儲結(jié)構(gòu)(數(shù)據(jù)文件、磁盤文件)
Database writer (DBWn)數(shù)據(jù)庫寫進(jìn)程:
只做一件事顿痪,將數(shù)據(jù)寫到磁盤镊辕。就是將數(shù)據(jù)庫的變化寫入到數(shù)據(jù)文件。
該進(jìn)程最多20 個蚁袭,即使你有36 個CPU 也只能最多有20 個數(shù)據(jù)庫寫進(jìn)程征懈。
進(jìn)程名稱DBW0-DBW9 DBWa-DBWj

注意:數(shù)據(jù)庫寫進(jìn)程越多,寫數(shù)據(jù)的效率越高揩悄。該進(jìn)程的個數(shù)應(yīng)該和cpu的個數(shù)對應(yīng)卖哎,如果設(shè)置的數(shù)據(jù)庫寫進(jìn)程數(shù)大于CPU 的個數(shù)也不會有太明顯的效果,因為CPU 是分時的删性。

B.檢查點(CKPT)

檢查點

Checkpoint (CKPT)檢查點進(jìn)程:

主要用戶更新數(shù)據(jù)文件頭亏娜,更新控制文件和觸發(fā)DBWn數(shù)據(jù)庫寫進(jìn)程。
Ckpt 進(jìn)程會降低數(shù)據(jù)庫性能蹬挺,但是提高數(shù)據(jù)庫崩潰時维贺,自我恢復(fù)的性能。我們可以理解為階段性的保存數(shù)據(jù)巴帮,一定的條件滿足就觸發(fā)溯泣,執(zhí)行DBWn存盤操作。

C.進(jìn)程監(jiān)視進(jìn)程(PMON)

進(jìn)程監(jiān)視進(jìn)程

PMON在后臺進(jìn)程執(zhí)行失敗后負(fù)責(zé)清理數(shù)據(jù)庫緩存和閑置資源榕茧,是Oracle的自動維護機制垃沦。
清除死進(jìn)程 重新啟動部分進(jìn)程(如調(diào)度進(jìn)程) 監(jiān)聽的自動注冊 回滾事務(wù) 釋放鎖 釋放其他資

D.系統(tǒng)監(jiān)視進(jìn)程(SMON)

系統(tǒng)監(jiān)視進(jìn)程

SMON啟動后會自動的用于在實例崩潰時進(jìn)行數(shù)據(jù)庫實例自動恢復(fù)。
清除作廢的排序臨時段用押,回收整理碎片肢簿,合并空閑空間,釋放臨時段蜻拨,維護閃回的時間點池充。
在老數(shù)據(jù)庫版本中,當(dāng)我們大量刪除表的時候缎讼,會觀測到SMON進(jìn)程很忙纵菌,直到把所有的碎片空間都整理完畢。

E.重做日志文件和日志寫入進(jìn)程

重做日志文件和日志寫入進(jìn)程

主要用于記錄數(shù)據(jù)庫的改變和記錄數(shù)據(jù)庫被改變之前的原始狀態(tài)休涤,所以應(yīng)當(dāng)對其作多重備份,用于恢復(fù)和排錯。
激活LGWR的情況:
提交指令 日志緩沖區(qū)超過1/3 每三秒 每次DBWn執(zhí)行之前

F.歸檔進(jìn)程(ARCn)

歸檔進(jìn)程

五.存儲結(jié)構(gòu)

Oracle RDBMS存儲結(jié)構(gòu)主要由Database組成功氨。
又能夠?qū)atabase分為物理結(jié)構(gòu)和邏輯結(jié)構(gòu)來理解序苏。


存儲結(jié)構(gòu)

1.物理結(jié)構(gòu)

Database物理結(jié)構(gòu):是Database在操作系統(tǒng)中的文件集合,即:磁盤上的物理文件捷凄,主要由數(shù)據(jù)文件忱详、控制文件、重做日志文件跺涤、歸檔日志文件匈睁、參數(shù)文件、口令文件組成桶错。

A.Data Files

  • 數(shù)據(jù)文件是數(shù)據(jù)的存儲倉庫航唆。
  • 包括所有的數(shù)據(jù)庫數(shù)據(jù)
  • 只能屬于一個數(shù)據(jù)庫
  • 來自于被稱為”表空間”的數(shù)據(jù)庫存儲邏輯單元
  • 可以直接被讀進(jìn)內(nèi)存,在執(zhí)行SQL語句的時候院刁,會將相關(guān)的數(shù)據(jù)文件副本加載如數(shù)據(jù)緩沖區(qū)糯钙。
  • 通過備份策略可以使數(shù)據(jù)文件得到保護

B.Redo Log Files

重做日志文件包含對數(shù)據(jù)庫所做的更改操作記錄,在Oracle發(fā)生故障時能夠恢復(fù)數(shù)據(jù)退腥。

能夠恢復(fù)數(shù)據(jù)的原理:重做日志文件會按時間的順序任岸,將應(yīng)用于數(shù)據(jù)庫的一連串的變更向量(做了什么操作)存儲起來(即將變更的地方標(biāo)記起來)。其中包含了所有已經(jīng)完成操作的信息和完成操作之前的數(shù)據(jù)庫狀態(tài)狡刘。如果數(shù)據(jù)文件受損享潜,就可以將這些變更向量應(yīng)用于數(shù)據(jù)文件備份來進(jìn)行重做(重建)工作,將它恢復(fù)到發(fā)生故障的那一刻前的狀態(tài)嗅蔬。重做日志文件又分為下面兩種類型:

聯(lián)機重做日志文件:記錄連續(xù)的數(shù)據(jù)庫操作 歸檔日志文件Archived Log Files:用于時間點恢復(fù)剑按,當(dāng)RedoLogFiles存滿時,會對這些日志進(jìn)行歸檔備份购城,以便以后還原數(shù)據(jù)時使用吕座。

C.Control Files

控制文件包含維護和驗證數(shù)據(jù)庫完整性的必要的信息。

它記錄了聯(lián)機重做日志文件瘪板、數(shù)據(jù)文件的位置吴趴、更新的歸檔日志文件的位置。它還存儲著維護數(shù)據(jù)庫完整性所需的信息侮攀,如數(shù)據(jù)庫名锣枝。控制文件是以二進(jìn)制型式存儲的兰英,用戶無法修改控制文件的內(nèi)容撇叁。控制文件不過數(shù)MB畦贸,卻起著至關(guān)重要的作用陨闹。

D.Parameter File

實例參數(shù)文件楞捂,當(dāng)啟動oracle實例時,SGA結(jié)構(gòu)會根據(jù)此參數(shù)文件的設(shè)置內(nèi)存趋厉,后臺進(jìn)程會據(jù)此啟動寨闹。

E.Password File

用戶通過提交username/password來建立會話,Oracle根據(jù)存儲在數(shù)據(jù)字典的用戶定義對用戶名和口令進(jìn)行驗證君账。

2.邏輯結(jié)構(gòu)

表空間就是典型的Oracle邏輯結(jié)構(gòu)類型 —— 里面存放著若干的數(shù)據(jù)文件

表空間:用于存儲數(shù)據(jù)庫對象的邏輯空間繁堡,表空間是在數(shù)據(jù)庫中開辟的一個空間,用于存放數(shù)據(jù)庫的對象乡数,它是信息存儲的最大邏輯單位椭蹄,是存放數(shù)據(jù)庫文件的地方,其中數(shù)據(jù)又被存放在表空間中的數(shù)據(jù)文件中净赴。一個數(shù)據(jù)庫可以由多個表空間組成绳矩,Oracle的調(diào)優(yōu)就是通過表空間來實現(xiàn)的。(Oracle數(shù)據(jù)庫獨特的高級應(yīng)用)

表空間的作用:分類管理劫侧、批量處理; 將瑣碎的磁盤文件整合埋酬、抽象處理成為邏輯結(jié)構(gòu)烧栋。這樣更加便于我們?nèi)ス芾頂?shù)據(jù)庫写妥。

邏輯空間到物理空間的映射


段、區(qū)和塊

六.簡述Oracle運行過程

這里寫圖片描述
這里寫圖片描述
  • User訪問Oracle Server之前提交一個請求(包含了db_name审姓、instance_name珍特、username、password等信息)魔吐,Oracle Server接收到請求并通過Password File的驗證后扎筒,分配SGA內(nèi)存池,啟動后臺進(jìn)程同時創(chuàng)建并啟動實例酬姆。
  • 在啟動實例之后User Process與Server Process建立Connect嗜桌。
  • 再通過Server process和Oracle Instance完成建立Sesscion。
  • 用戶執(zhí)行SQL語句辞色,由server process接收到并直接與Oracle交互骨宠。
  • SQL語句通過Server Process到達(dá)Oracle Instance,再將SQL載入數(shù)據(jù)庫緩沖區(qū)相满。
  • Server Process通知Oracle Database將與SQL語句相關(guān)的數(shù)據(jù)塊副本加載到緩沖區(qū)中层亿。
  • 在數(shù)據(jù)庫緩存區(qū)執(zhí)行SQL語句,并產(chǎn)生”臟緩沖區(qū)”立美。
  • 由CKPT檢查點進(jìn)程檢查到”臟緩沖區(qū)”匿又,并調(diào)用DBWn數(shù)據(jù)庫寫進(jìn)程,但在DBWn執(zhí)行之前建蹄,應(yīng)該由LGWR先將數(shù)據(jù)文件的原始狀態(tài)碌更、數(shù)據(jù)庫的改變等信息記錄到Redo Log Files裕偿。
  • 將更新的內(nèi)容寫入到磁盤中的數(shù)據(jù)文件。 返回結(jié)果給用戶
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末针贬,一起剝皮案震驚了整個濱河市击费,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌桦他,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,290評論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件谆棱,死亡現(xiàn)場離奇詭異快压,居然都是意外死亡,警方通過查閱死者的電腦和手機垃瞧,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,107評論 2 385
  • 文/潘曉璐 我一進(jìn)店門蔫劣,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人个从,你說我怎么就攤上這事脉幢。” “怎么了嗦锐?”我有些...
    開封第一講書人閱讀 156,872評論 0 347
  • 文/不壞的土叔 我叫張陵嫌松,是天一觀的道長。 經(jīng)常有香客問我奕污,道長萎羔,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,415評論 1 283
  • 正文 為了忘掉前任碳默,我火速辦了婚禮贾陷,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘嘱根。我一直安慰自己髓废,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 65,453評論 6 385
  • 文/花漫 我一把揭開白布该抒。 她就那樣靜靜地躺著慌洪,像睡著了一般。 火紅的嫁衣襯著肌膚如雪柔逼。 梳的紋絲不亂的頭發(fā)上蒋譬,一...
    開封第一講書人閱讀 49,784評論 1 290
  • 那天,我揣著相機與錄音愉适,去河邊找鬼犯助。 笑死,一個胖子當(dāng)著我的面吹牛维咸,可吹牛的內(nèi)容都是我干的剂买。 我是一名探鬼主播惠爽,決...
    沈念sama閱讀 38,927評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼瞬哼!你這毒婦竟也來了婚肆?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,691評論 0 266
  • 序言:老撾萬榮一對情侶失蹤坐慰,失蹤者是張志新(化名)和其女友劉穎较性,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體结胀,經(jīng)...
    沈念sama閱讀 44,137評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡赞咙,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,472評論 2 326
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了糟港。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片攀操。...
    茶點故事閱讀 38,622評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖秸抚,靈堂內(nèi)的尸體忽然破棺而出速和,到底是詐尸還是另有隱情,我是刑警寧澤剥汤,帶...
    沈念sama閱讀 34,289評論 4 329
  • 正文 年R本政府宣布颠放,位于F島的核電站,受9級特大地震影響秀姐,放射性物質(zhì)發(fā)生泄漏慈迈。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,887評論 3 312
  • 文/蒙蒙 一省有、第九天 我趴在偏房一處隱蔽的房頂上張望痒留。 院中可真熱鬧,春花似錦蠢沿、人聲如沸伸头。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,741評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽恤磷。三九已至,卻和暖如春野宜,著一層夾襖步出監(jiān)牢的瞬間扫步,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評論 1 265
  • 我被黑心中介騙來泰國打工匈子, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留河胎,地道東北人。 一個月前我還...
    沈念sama閱讀 46,316評論 2 360
  • 正文 我出身青樓虎敦,卻偏偏與公主長得像游岳,于是被迫代替她去往敵國和親政敢。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,490評論 2 348

推薦閱讀更多精彩內(nèi)容