行儲存和列儲存的區別及各自的應用場景

2021-08-20 07:27:40 字數 1392 閱讀 6014

一、定義

二、例子1

資料庫以行、列的二維表的形式表示資料,但是卻以一維字串的方式儲存,舉個例子

資料庫會把這個表儲存在一系列的一維位元組中,由作業系統將這一系列的位元組寫到磁碟中。

1,smith,joe,40000;2,jones,mary,50000;3,johnson,cathy,44000;

1,2,3;smith,jones,johnson;joe,mary,cathy;40000,50000,44000;

上面是簡化的說法,只是為了便於表達意思。

三、例子2

在行式資料庫中,每一行資料都看做乙個整體,可以被認為是一小塊資料,這樣每一塊資料都是緊挨著另一塊資料存放在硬碟中。一般情況下,可以認為每一行儲存的資料就是硬碟中的一組連續的位元組。

為了方便討論,有如下表,假設每一行都包含乙個使用者的資訊,每個使用者的所有屬性都整塊的儲存在硬碟上

在硬碟上,大量的頁面用來儲存所有的資料。現在假設資料庫中的每行資訊都儲存在同一頁上,也就是說,每一頁只能儲存乙個使用者的所有資訊。在上面的例子中,alice 的所有資訊都被儲存到乙個頁面中,如果需要獲取或者更新 alice 的資訊,那麼某一時刻在記憶體中僅需儲存關於 alice 的單一頁面。如所示:

但是,如果你只是想對錶中所有資料的某一列的資料做一些操作,這意味著你將花費時間去訪問每一行,可你用到的僅是一行中的小部分資料。此時使用的若是列式資料庫,就可以方便快捷的訪問資料,因為每一列的資訊都是儲存在一起的。

蛋疼的時候來了,假如現在使用的是列式儲存,你又想獲取 alice 的所有資訊,那你又必須去讀取大量的列(頁面)來獲取所有的資料。

正因為如此,才有了行式儲存和列式儲存的使用場景的區別。

當你的核心業務是 oltp 時,乙個行式資料庫,再加上優化操作,可能是個最好的選擇。

當你的核心業務是 olap 時,乙個列式資料庫,絕對是更好的選擇

行儲存和列儲存的區別

列儲存不同於傳統的關係型資料庫,其資料在表中是按行儲存的,列方式所帶來的重要好處之一就是,由於查詢中的選擇規則是通過列來定義的,因此整個資料庫是自動索引化的。按列儲存每個欄位的資料聚集儲存,在查詢只需要少數幾個欄位的時候,能大大減少讀取的資料量,乙個欄位的資料聚集儲存,那就更容易為這種聚集儲存設計更...

行儲存和列儲存的區別

一 對比行儲存和列儲存的區別前,我們先來聊下背景。假設我們用mysql做了乙個商品訂單庫order,如下 orderid name kind price kgtime1豬肉 肉類50 2.02020.01.012牛肉 肉類60 1.02020.01.013白菜 蔬菜61.02020.01.01 二 ...

行儲存和列儲存的區別

行儲存和列儲存的區別 a.行儲存的寫入是一次完成,資料的完整性因此可以確定。列儲存需要把一行記錄拆分成單列儲存,寫入次數明顯比行儲存多。行儲存在寫入上占有很大的優勢 b.行儲存是在指定位置寫入一次,列儲存是將磁碟定位到多個列上分別寫入 行儲存在資料修改也是佔優的 c.行儲存通常將一行資料完全讀出,如...