《高併發Oracle資料庫系統的架構與設計》一導讀

2021-09-23 15:06:54 字數 2387 閱讀 8286

為什麼要寫這本書

寫一本oracle資料庫方面的技術書籍,是我乙個持續了四五年的想法。本著自我總結和快樂分享的初衷,不只一次地諮詢過eygle大師關於寫書的細節,eygle大師也熱情地予以指導。遺憾的是,總是因為這樣那樣的原因,這個想法遲遲不能落地。

2023年的夏天,我有幸作為微博特使參與了甲骨文全球大會(oracle open world)上海站的活動,跟一位甲骨文的朋友閒談中,不經意聊到了與oracle資料庫「共事」已經快十年了。朋友說我應該有不少心得了,鼓勵我花一年的時間來做乙個總結,可以寫一本書分享給更多的朋友。「十年」是乙個非常特別的東西,它徹底激發出我寫書的熱情。凌亂的思緒,不知該寫些什麼的時候,聯想到再遊十年未見西湖的感觸:

雲慟風摧山北暮,橋斷平湖,西子顏如故。曲院風荷香暗渡,餘暉昨日穿朱戶。

月澹星稀聞浪住,對酒當歌,言莫愁時苦。意若隨心晴若雨,誰知明日鴻歸處?

對於技術人來說,杭州漸漸演變成技術之城,然而因為西湖,她應該是藝術的。正如以藝術之眼去欣賞oracle資料庫,不僅僅是純技術活,更能發現其藝術之美。懷著一顆附庸風雅之心,我決定寫一本具有一定實用價值的資料庫架構設計和效能優化方面的書。

回顧十年技術之路,如大多數同行一樣,一切都是從ocp認證開始的,沒能趕上8i ocp的尾班車,只好搭乘了9i ocp的頭班車。如今認證不如以前受重視了,然而我一直認為ocp給我們提供了乙個完整的基礎知識體系,其價值不在於那一張紙而已。現在,dba工作內容逐步實現了流程化和模組化,一些初學者已經可以輕鬆地完成一些複雜架構的搭建,卻時常會因為一些基礎的概念性的東西而糾結不清,我會毫不猶豫地推薦他們去進行ocp教材的學習。只有建立自己的基礎知識體系,才能主動地去思考問題,才能開始專職dba之路。

在十年之前,有專職dba的公司可以說少之又少,早期的dba都是從開發轉過來的,做的人多了,也就有專職dba這個概念,進而很多不願意寫**的人也紛紛投身其中。各個公司也出於系統安全和精細分工的考慮,開始禁止dba了解、熟悉業務,禁止dba訪問業務資料等,以至於現在很多dba沒有開發能力,也不懂得業務應用,僅僅是乙個資料庫技術的支持者,進而導致dba被誤讀為夕陽職業。早期的dba為什麼能備受重視,不僅僅是因為物以稀為貴,更多的是因為有開發背景,了解業務流程,具備復合能力,這才是最可貴的。可以說不懂得dba技能的開發不是好開發,不懂得開發的dba不是好dba。

可喜的是,隨著時間的發展,大家都開始意識到這個問題,於是資料庫架構師的概念應運而生,他們是一群復合能力的擁有者,是開發人員和dba之間的橋梁。然而,復合能力也是有較強的行業依賴性的,沒有可以跨行業的萬能復合,也沒有能完全跨行業實現的萬能資料庫架構。我在本書的編寫過程中,也是以我熟悉的金融行業為立足點,盡可能地兼顧全面闡述。

本書將給讀者乙個全新的視角,秉承大道至簡的主導思想,只介紹高併發資料庫架構設計中最值得關注的內容,不在於某種技能的分享,而致力於一種方**的建立,希望能拋磚引玉,以個人的一些想法和見解,為讀者拓展出更深入、更全面的思路。

第一部分 內政篇

第1章 大道至簡

1.1 初見高併發

1.2 說句時髦話

1.3 在oracle的世界裡

1.4 本章小結

第2章 高效b樹索引

2.1 索引掃瞄識別

2.2 索引與排序

2.3 索引設計優化

2.4 索引**

2.5 索引維護

2.6 本章小結

第3章 高效表設計

3.1 資料生命週期管理

3.1.1 什麼是資料生命週期管理

3.1.2 架構模型設計

3.1.3 資料分層儲存

3.2 常用字段型別選擇

3.2.1 varchar2與char

3.2.2 number與varchar2

3.2.3 主鍵欄位的選擇

3.2.4 lob欄位

3.3 字段順序

3.3.1 熱字段靠前排

3.3.2 行寬需要控制

3.4 行鏈結與行遷移

3.4.1 行鏈結原理

3.4.2 行遷移原理

3.4.3 發現問題

3.4.4 解決問題

3.5 分割槽表的使用

3.5.1 何時使用分割槽表

3.5.2 分割槽表設計思路

3.5.3 分割槽表特性

3.6 適當的冗餘

3.6.1 反正規化建模

3.6.2 物化檢視

3.6.3 結果集快取

3.6.4 直接路徑插入

3.7 碎片分析與整理

3.7.1 碎片的產生

3.7.2 dbms_space包

3.7.3 碎片的整理

3.8 本章小結

資料庫系統 併發控制

事務 一系列的操作要麼全做要麼全不做 1.原子性 將事務中的操作看成是乙個整理,不能拆分 2.一致性 在事務執行之前,資料是保持一致的狀態,執行之後,也是一致的狀態 例如 假設整個銀行系統共有300元,a賬戶有100元,b賬戶有200元,當a賬戶往b賬戶轉了100元後,銀行系統還是有300元,在轉賬...

資料庫系統mysql MySQL資料庫系統

1 mysql的特點 1 多執行緒 多使用者 2 基於c s 客戶端 伺服器 架構 3 簡單易用 查詢速度快 4 安全可靠 2 mysql編譯安裝 代表鍵盤上tab鍵 1 準備工作 解除安裝使用rpm方式安裝的mysql rpm e mysql nodeps 安裝cmake包 cd media ta...

資料庫系統 資料庫 資料庫管理系統 資料庫系統

繼續寫資料庫系統的文章,第二篇 資料庫 資料庫管理系統 資料庫系統。本文主要談談這三者之間的關係。下方,摘自老師的ppt,非原創。資料庫管理系統 從系統角度看資料庫管理系統 資料庫系統 資料庫指的是長期儲存在計算機內有組織的,大量的,相關聯的,可共享的資料集合。資料應當是有組織的,不應該是雜亂無章的...