亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

什么是Oracle的分區表 (轉 作者 陳字文)

系統 2065 0

假設我們現在正在醞釀經營一家圖書館,最初,我們只有十本書提供給大家來閱讀和購買。對于十本書而言,我們可能只需要一個書架格子將其作為保存這十本書的容器就足夠了,因為任何一個人都可以很輕松的掃一眼就可以將這十本書的書名大概記住,并且挑選出合適自己的書籍來看。

? ? 但是隨著我們書籍越來越多,我們需要更大的容器來保存我們的科教類、IT類、歷史類、人文類等等書籍,大家都知道的一個生活常識就是,我們肯定不能夠將所有類型的書籍都扔到一個書架容器上擺著,最科學的,就是分區,將不同的書籍放到不同的地方去,這樣,假如我們在西安五路口的新華書店,那么就只需要跑到四樓的IT分區,去找相關的IT書籍。
? ? 在生活中是這個樣子,在數據庫中呢?
? ? 現在的數據庫業務數據和日志數據,以幾何級數的速度在增長著。以我之前從事社保行業為例,社保的日志動輒幾十G,其實,其中幾乎涵蓋了從系統試運行到運行一兩年之后的數據,這樣一個巨大的表,讓數據的邏輯備份、查詢、甚至基于日志表的回退都產生了巨大的效率問題。
? ? 如何能夠快速有效的刪除三個月之前的日志信息,如何能夠快速的檢索當前月份的信息,如何充分利用多塊磁盤空間(裸設備)的物理環境,增加并行度平衡I/O從而改善性能增強數據庫的可用性?Oracle在8.0版本之后提出的表的分區功能就是一個非常關鍵的實用技術。
? ? 早在8.0.5版本中,Oracle就將范圍分區技術引入,現在分區功能已經越來越強大,包括支持擴展分區功能、Interval分區、外鍵分區、模擬列分區、以及分區建議器等。那么,分區到底有什么好處呢?我們為什么要使用分區呢?在什么環境下使用分區比較合適呢?在金牌管理群中,有一個哥們請教一個多用戶下一張10W頻繁表的增加、刪除、修改表的問題,很多朋友給出了修改其成為分區表的建議。其實,這張表能否將其設置為分區表,是需要看具體的業務使用環境的,多用戶下頻繁的增刪改查,我認為應當使用全局臨時表而非使用分區表,這個并不是分區表的典型應用環境,相反,應當是全局臨時表的應用環境,并且在一本參考書中,找到了一位大牛的建議作為佐證:“分區表應用在大表更合適,至少要大于100萬條的記錄才可以考慮使用分區表”,例如社保系統中,使用分區表解決日志問題冗余問題就是一個最佳使用場景。
? ? 這個結論是非常容易理解的,就類似于我們最前面引入的一個例子,我們開書店,只有十本書,假設未來也只會有那么幾本,那么我們為什么要費盡心思的分成不同的區域呢?那豈不是畫蛇添足了么?既不經濟也不和諧,只有當我們采購的書籍的量非常大的時候,我們才會去考慮使用分區技術來解決查找效率問題。
? ? 假設現在用戶希望找到一本《數據結構》的教科書,我們在100W本書籍里面大海撈針的去找快呢?還是在10W本IT類書籍中去查找快呢?答案是顯而易見的。當我們只有10本書呢?我們還會建立分區嗎?我們直接肉眼全部掃描一下,直接得到這本書就好了。因此我們需要在特定的環境下選擇特定的技術解決方案,目的是追求更高的效能,更高的性能帶來的必然是用戶更高的滿意度,更高的滿意度帶來的必然是更好的經濟效益,更好的經濟效益帶來的必然是圖書管理員們更美好的生活。
?
那么就讓我們看一下Oracle提供的分區功能到底有什么樣子的好處呢?
?
1)由于Oracle數據庫可以將分區指定為不同的表空間,而不同的表空間是可以指向不同的磁盤設備的,在很多時候,磁盤設備的I/O速度是系統進行數據操作的瓶頸,而分區并行,則起到了優化物理硬件資源,從而縮短了執行的時間的作用。
2)分區,就類似于我們將圖書分類放到了不同的區間中,這個時候,我們就可以只針對其中的某一類圖書進行操作,比如進行該類書籍的查詢、上架、下架、甚至將該類圖書付之一炬,這帶來了兩個特別大的優勢,第一,我們無視其他分區的數據;第二,我們可以很方便的對本區的數據進行刪除操作。
3)提高了特定的查詢速度,比如我們現在只需要查找IT類圖書的數量,因為我們能夠在第一意識中,排除其他非IT類書籍,必然會提高查詢的性能。
4)節約維護的成本,傳統的維護操作,例如重建索引等,因為有鎖機制的存在,是會影響到其他人的讀取和更新刪除操作的,但是由于有了分區,我們在維護IT類書籍的時候,就不會對其他分類的數據造成影響,這個時候,可以降低因為維護數據而對其他系統數據產生的各種影響。
5)從安全的角度上而言,我們將不同的分區放在不同的表空間當中,就類似于我們沒有將所有的雞蛋放到一個籃子里面,必然會帶來安全方面的提升。
?
Oracle提供了下面幾種比較常見的分區方式:
?
1)范圍分區(partition by range)
?
? ? 我們可以想象范圍分區的前提,假如我們現在有100W本書,如果分成10個分區,能夠比較平均的將每一類維持在10W本左右,是最理想不過了,這樣看起來即工整又漂亮。因此,我們在建立范圍分區的時候,如何選擇范圍分區的依據從而能夠讓數據均勻分布,是一個需要重點關注的問題。
? ? 在很多情況下,例如上述提到的社保系統中的日志表,使用日期進行分類就是一個比較好的分區方案,因為每個月產生的數據量都是大致相同的。下面,我們通過腳本來創建一個基于月份的范圍分區表(假設插入的數據全部都是2013年的數據):
DROP TABLE PART_LOG_CHENZW PURGE;
?
CREATE TABLE PART_LOG_CHENZW(
? ? ? ?LOG_ID NUMBER(20) PRIMARY KEY,
? ? ? ?LOG_DATE DATE,
? ? ? ?LOG_DESC VARCHAR2(20)
)
PARTITION BY RANGE(LOG_DATE)
(
?PARTITION PART_LOG_01 VALUES LESS THAN (TO_DATE('2013-01-01','YYYY-MM-DD')) TABLESPACE DATA,
?PARTITION PART_LOG_02 VALUES LESS THAN (TO_DATE('2013-03-01','YYYY-MM-DD')) TABLESPACE DATA,
?PARTITION PART_LOG_03 VALUES LESS THAN (TO_DATE('2013-05-01','YYYY-MM-DD')) TABLESPACE DATA,
?PARTITION PART_LOG_04 VALUES LESS THAN (TO_DATE('2013-07-01','YYYY-MM-DD')) TABLESPACE DATA,
?PARTITION PART_LOG_05 VALUES LESS THAN (TO_DATE('2013-09-01','YYYY-MM-DD')) TABLESPACE DATA,
?PARTITION PART_LOG_06 VALUES LESS THAN (TO_DATE('2013-10-01','YYYY-MM-DD')) TABLESPACE DATA,
?PARTITION PART_LOG_07 VALUES LESS THAN (MAXVALUE) TABLESPACE DATA
);
?
? ? 上面的例子就是一個使用范圍分區的典型例子,在創建表的時候使用PARTITION BY RANGE關鍵字來指出進行分區的策略,其中PARTITION BY LOG(LOG_DATE)指的是使用LOG_DATE來作為分區的字段,里面根據取值的大小,命名了7個分區來存放數據,每個分區還可以指定不同的表空間,第七個分區使用MAXVALUE來避免有數值沒有被上面的范圍圈定,這個就類似于SWITCH語法中的DEFAULT,不同的,這個并不是fall through的。
?
? ? 下面,我們來生成10萬條數據來插入到表中,查看一下表中發生了什么樣子的變化?
INSERT INTO PART_LOG_CHENZW
? ? (LOG_ID, LOG_DATE, LOG_DESC)
? ? SELECT LEVEL,
? ? ? ? ? ?TO_DATE('2013-01-01', 'YYYY-MM-DD') +
? ? ? ? ? ?NUMTODSINTERVAL(CEIL(DBMS_RANDOM.VALUE(0, 365)), 'DAY'),
? ? ? ? ? ?LEVEL || 'DESC'
? ? ? FROM DUAL
? ? CONNECT BY LEVEL <= 100000;
?
? ? 首先,我們可以查詢一下落在7、8月份的日志記錄,就如同我們去新華書店只是去查找IT類的書籍一樣,我們知道我們應當去那里尋找名字為PART_LOG_05分區的數據:
SELECT COUNT(1) FROM PART_LOG_CHENZW PARTITION (PART_LOG_05);
下面是在我本機的顯示結果:
06:50:40 ChenZw> SELECT COUNT(1) FROM PART_LOG_CHENZW PARTITION (PART_LOG_05);
?
? COUNT(1)
----------
? ? ?16981
? ? 通過上面的結果可以很明顯的看出,有16981條數據落在了7、8月份的分區中。我們通過指定分區,將全部的注意力只放到此1.6W條左右的數據而不是全部的10W條數據上,可以很明顯帶來效能的提升。
?
? ? 有一個問題隨之而來,我們應當如何知道,圖書館里面都有什么樣子的分區呢?我們如何才能知道正確的分區呢?在新華書店中,往往在上電梯的時候,都會有一個指示牌,告訴你,IT類書籍在4樓,人文社科類圖書在1樓....其實,Oracle數據庫也提供了這個指引牌,那就是下面兩個數據字典:DBA_PART_TABLES和DBA_TAB_PARTITIONS,下面我們就翻一下兩個“指示牌”中的內容:
?
SQL>?
SELECT T.OWNER AS "所有者",
? ? ? ?T.TABLE_NAME AS "表名",
? ? ? ?T.PARTITIONING_TYPE AS "分區類型",
? ? ? ?T.SUBPARTITIONING_TYPE AS "子分區類型",
? ? ? ?T.PARTITION_COUNT AS "子分區數量",
? ? ? ?T.PARTITIONING_KEY_COUNT AS "分區鍵中列的數量",
? ? ? ?T.SUBPARTITIONING_KEY_COUNT AS "子分區鍵中列的數量",
? ? ? ?T.STATUS AS "分區表狀態",
? ? ? ?T.DEF_TABLESPACE_NAME AS "默認表空間"
? FROM DBA_PART_TABLES T
?WHERE T.TABLE_NAME IN ('PART_LOG_CHENZW');
?
所有者 ? ?表名 ? ? ? ? ? ? ? 分區類型 ?子分區類型 子分區數量 分區鍵中列的數量 子分區鍵中列的數量 分區表狀態 默認表空間
-------- ----------------- ?------- ---------- ---------- -------------- ---------------- ---------- ------------------------------
CHENZW ? PART_LOG_CHENZW ? ?RANGE ? ? NONE ? ? 7 ? ? ? ? ?1 ? ? ? ? ? ? ?0 ? ? ? ? ? ? ? ?VALID ? ? ?DATA
?
? ? 通過上面我們可以看到,表PART_LOG_CHENZW現在有7個分區,但是,我們并不能知道這7個分區都是存放什么樣子的數據的?我們到什么地方去找到我們希望的7、8月的數據呢?
SQL>?
SELECT T.TABLE_OWNER AS "所有者",
? ? ? T.TABLE_NAME AS "表名",
? ? ? T.COMPOSITE AS "是否組合分區",
? ? ? T.PARTITION_NAME AS "分區名",
? ? ? T.SUBPARTITION_COUNT AS "子分區數",
? ? ? T.HIGH_VALUE AS "分區上限",
? ? ? T.HIGH_VALUE_LENGTH AS "分區上限長度",
? ? ? T.PARTITION_POSITION AS "分區在表中位置",
? ? ? T.TABLESPACE_NAME AS "所在表空間"
?FROM DBA_TAB_PARTITIONS T
WHERE T.TABLE_NAME IN ('PART_LOG_CHENZW')
/
?
所有者 ?表名 ? ? ? ? ? ? 是否組合分區 分區名 ? ? ? ? 子分區數 分區上限 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 分區上限長度 分區在表中位置 所在表空間
------- ---------------- ------------ ------------ ---------- -------------------------------------------------------------------------------- ------------ -------------- ----------
CHENZW ?PART_LOG_CHENZW ?NO ? ? ? ? ? PART_LOG_01 ? ? ? ? ? 0 TO_DATE(' 2013-01-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIA ? ? ? ? ? 83 ? ? ? ? ? ? ?1 DATA
CHENZW ?PART_LOG_CHENZW ?NO ? ? ? ? ? PART_LOG_02 ? ? ? ? ? 0 TO_DATE(' 2013-03-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIA ? ? ? ? ? 83 ? ? ? ? ? ? ?2 DATA
CHENZW ?PART_LOG_CHENZW ?NO ? ? ? ? ? PART_LOG_03 ? ? ? ? ? 0 TO_DATE(' 2013-05-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIA ? ? ? ? ? 83 ? ? ? ? ? ? ?3 DATA
CHENZW ?PART_LOG_CHENZW ?NO ? ? ? ? ? PART_LOG_04 ? ? ? ? ? 0 TO_DATE(' 2013-07-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIA ? ? ? ? ? 83 ? ? ? ? ? ? ?4 DATA
CHENZW ?PART_LOG_CHENZW ?NO ? ? ? ? ? PART_LOG_05 ? ? ? ? ? 0 TO_DATE(' 2013-09-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIA ? ? ? ? ? 83 ? ? ? ? ? ? ?5 DATA
CHENZW ?PART_LOG_CHENZW ?NO ? ? ? ? ? PART_LOG_06 ? ? ? ? ? 0 TO_DATE(' 2013-10-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIA ? ? ? ? ? 83 ? ? ? ? ? ? ?6 DATA
CHENZW ?PART_LOG_CHENZW ?NO ? ? ? ? ? PART_LOG_07 ? ? ? ? ? 0 MAXVALUE ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?8 ? ? ? ? ? ? ?7 DATA
?
7 rows selected
????從上面的結果可以看到,如果我們希望找到7、8月份的數據,就可以根據分區上限定位到PART_LOG_05分區。
?
? ? 最后,我們可以通過查詢數據字典USER_SEGMENTS來查看分區表占用的磁盤空間信息,如下:
SELECT T.SEGMENT_NAME AS "段名",
? ? ? ?T.PARTITION_NAME AS "分區名",
? ? ? ?T.SEGMENT_TYPE AS "分區類型",
? ? ? ?T.BYTES / POWER(1024, 2) || 'M' AS "分區大小",
? ? ? ?T.TABLESPACE_NAME AS "表空間"
? FROM USER_SEGMENTS T
?WHERE T.SEGMENT_NAME IN ('PART_LOG_CHENZW');
?
? ? 得到的結果如下:
段名 ? ? ? ? ? ? 分區名 ? ? ? 分區類型 ? ? ? ? ? 分區大小 ? 表空間
---------------- ------------ ------------------ ---------- -------
PART_LOG_CHENZW ?PART_LOG_01 ?TABLE PARTITION ? ?.0625M ? ? DATA
PART_LOG_CHENZW ?PART_LOG_02 ?TABLE PARTITION ? ?.5625M ? ? DATA
PART_LOG_CHENZW ?PART_LOG_03 ?TABLE PARTITION ? ?.5625M ? ? DATA
PART_LOG_CHENZW ?PART_LOG_04 ?TABLE PARTITION ? ?.5625M ? ? DATA
PART_LOG_CHENZW ?PART_LOG_05 ?TABLE PARTITION ? ?.625M ? ? ?DATA
PART_LOG_CHENZW ?PART_LOG_06 ?TABLE PARTITION ? ?.3125M ? ? DATA
PART_LOG_CHENZW ?PART_LOG_07 ?TABLE PARTITION ? ?.875M ? ? ?DATA
?
7 rows selected
?
2)列表分區(partition by list)
? ?假設我們現在只有四種類型的10W本圖書,分別為0 教育類、1 IT類、2 人文類、3社科類,只有這四種情況,我們就可以通過圖書的類型進行分區。通常情況下,如果你的數據中的某一項是可以被枚舉的,那么,此列就可以用作列表分區的分區字段。
DROP TABLE PART_BOOK_CHENZW PURGE;
?
CREATE TABLE PART_BOOK_CHENZW(
? ? ? ?BOOK_ID NUMBER(20) PRIMARY KEY,
? ? ? ?BOOK_DATE DATE,
? ? ? ?BOOK_TYPE NUMBER(2) NOT NULL,
? ? ? ?BOOK_DESC VARCHAR2(20)
)
PARTITION BY LIST(BOOK_TYPE)
(
?PARTITION PART_BOOK_01 VALUES(0) TABLESPACE DATA,
?PARTITION PART_BOOK_02 VALUES(1) TABLESPACE DATA,
?PARTITION PART_BOOK_03 VALUES(2) TABLESPACE DATA,
?PARTITION PART_BOOK_04 VALUES(3) TABLESPACE DATA
);
?
下面的腳本用于生成相應的數據:
INSERT INTO PART_BOOK_CHENZW
? ? (BOOK_ID, BOOK_DATE, BOOK_TYPE,BOOK_DESC)
? ? SELECT LEVEL,
? ? ? ? ? ?TO_DATE('2013-01-01', 'YYYY-MM-DD') +
? ? ? ? ? ?NUMTODSINTERVAL(CEIL(DBMS_RANDOM.VALUE(0, 365)), 'DAY'),
? ? ? ? ? ?MOD(LEVEL,4),
? ? ? ? ? ?LEVEL || 'DESC'
? ? ? FROM DUAL
? ? CONNECT BY LEVEL <= 100000;
?
3)散列分區(partition by hash)
? ? 個人覺著散列分區的更多的作用在于分散數據,通過將數據均勻分布從而規避I/O瓶頸,但是這個在平時的生產中確實比較少用到,所以,建議僅僅作為了解了。
DROP TABLE PART_BOOK_CHENZW PURGE;
?
CREATE TABLE PART_BOOK_CHENZW(
? ? ? ?BOOK_ID NUMBER(20) PRIMARY KEY,
? ? ? ?BOOK_DATE DATE,
? ? ? ?BOOK_TYPE NUMBER(2) NOT NULL,
? ? ? ?BOOK_DESC VARCHAR2(20)
)
PARTITION BY HASH(BOOK_ID)
(
?PARTITION PART_BOOK_01 TABLESPACE DATA,
?PARTITION PART_BOOK_02 TABLESPACE DATA,
?PARTITION PART_BOOK_03 TABLESPACE DATA,
?PARTITION PART_BOOK_04 TABLESPACE DATA
);
?
INSERT INTO PART_BOOK_CHENZW
? ? (BOOK_ID, BOOK_DATE, BOOK_TYPE,BOOK_DESC)
? ? SELECT LEVEL,
? ? ? ? ? ?TO_DATE('2013-01-01', 'YYYY-MM-DD') +
? ? ? ? ? ?NUMTODSINTERVAL(CEIL(DBMS_RANDOM.VALUE(0, 365)), 'DAY'),
? ? ? ? ? ?MOD(LEVEL,4),
? ? ? ? ? ?LEVEL || 'DESC'
? ? ? FROM DUAL
? ? CONNECT BY LEVEL <= 100000;
?
4)組合分區(partition by xxx subpartition by xxx)
? ? 假如我們現在有10W本月刊類雜志提供給消費者查看和購買,我們如何做分區合適呢?首先我們可以先將圖書根據種類進行分區,然后再對每個分區進行月份的分區,這樣對于大量的圖書而言,我們就可以根據實際的業務需要,將一大堆數據通過分區拆解為若干個小標進行管理,從而降低了管理的粒度,做到“精細化管理”。
?
? ? 下面是一個進行組合分區的例子:
--刪除測試表
DROP TABLE PART_BOOK_CHENZW PURGE;
?
--創建列表-范圍組合分區
CREATE TABLE PART_BOOK_CHENZW(
? ? ? ?BOOK_ID NUMBER(20) PRIMARY KEY,
? ? ? ?BOOK_DATE DATE,
? ? ? ?BOOK_TYPE NUMBER(2) NOT NULL,
? ? ? ?BOOK_DESC VARCHAR2(20)
)
PARTITION BY LIST(BOOK_TYPE)
SUBPARTITION BY RANGE(BOOK_DATE)
SUBPARTITION TEMPLATE
(
?SUBPARTITION PART_LOG_01 VALUES LESS THAN (TO_DATE('2013-01-01','YYYY-MM-DD')) TABLESPACE DATA,
?SUBPARTITION PART_LOG_02 VALUES LESS THAN (TO_DATE('2013-03-01','YYYY-MM-DD')) TABLESPACE DATA,
?SUBPARTITION PART_LOG_03 VALUES LESS THAN (TO_DATE('2013-05-01','YYYY-MM-DD')) TABLESPACE DATA,
?SUBPARTITION PART_LOG_04 VALUES LESS THAN (TO_DATE('2013-07-01','YYYY-MM-DD')) TABLESPACE DATA,
?SUBPARTITION PART_LOG_05 VALUES LESS THAN (TO_DATE('2013-09-01','YYYY-MM-DD')) TABLESPACE DATA,
?SUBPARTITION PART_LOG_06 VALUES LESS THAN (TO_DATE('2013-10-01','YYYY-MM-DD')) TABLESPACE DATA,
?SUBPARTITION PART_LOG_07 VALUES LESS THAN (MAXVALUE) TABLESPACE DATA
)
(
?PARTITION PART_BOOK_01 VALUES(0) TABLESPACE DATA,
?PARTITION PART_BOOK_02 VALUES(1) TABLESPACE DATA,
?PARTITION PART_BOOK_03 VALUES(2) TABLESPACE DATA,
?PARTITION PART_BOOK_04 VALUES(3) TABLESPACE DATA
);
--生成測試數據
INSERT INTO PART_BOOK_CHENZW
? ? (BOOK_ID, BOOK_DATE, BOOK_TYPE,BOOK_DESC)
? ? SELECT LEVEL,
? ? ? ? ? ?TO_DATE('2013-01-01', 'YYYY-MM-DD') +
? ? ? ? ? ?NUMTODSINTERVAL(CEIL(DBMS_RANDOM.VALUE(0, 365)), 'DAY'),
? ? ? ? ? ?MOD(LEVEL,4),
? ? ? ? ? ?LEVEL || 'DESC'
? ? ? FROM DUAL
? ? CONNECT BY LEVEL <= 100000;
?
上面的組合分區和單一的范圍分區有什么區別呢?我們通過查詢數據字典看一下:
SQL>
SELECT T.TABLE_OWNER AS "所有者",
? ? ? T.TABLE_NAME AS "表名",
? ? ? T.COMPOSITE AS "是否組合分區",
? ? ? T.PARTITION_NAME AS "分區名",
? ? ? T.SUBPARTITION_COUNT AS "子分區數",
? ? ? T.HIGH_VALUE AS "分區上限",
? ? ? T.HIGH_VALUE_LENGTH AS "分區上限長度",
? ? ? T.PARTITION_POSITION AS "分區在表中位置",
? ? ? T.TABLESPACE_NAME AS "所在表空間"
?FROM DBA_TAB_PARTITIONS T
WHERE T.TABLE_NAME IN ('PART_BOOK_CHENZW')
/
?
所有者 ?表名 ? ? ? ? ? ? ?是否組合分區 分區名 ? ? ? ? ?子分區數 分區上限 分區上限長度 分區在表中位置 所在表空間
------- ----------------- ------------ ------------- ---------- -------- ------------ -------------- -----------
CHENZW ?PART_BOOK_CHENZW ?YES ? ? ? ? ?PART_BOOK_01 ? ? ? ? ? 7 0 ? ? ? ? ? ? ? ? ? 1 ? ? ? ? ? ? ?1 DATA
CHENZW ?PART_BOOK_CHENZW ?YES ? ? ? ? ?PART_BOOK_02 ? ? ? ? ? 7 1 ? ? ? ? ? ? ? ? ? 1 ? ? ? ? ? ? ?2 DATA
CHENZW ?PART_BOOK_CHENZW ?YES ? ? ? ? ?PART_BOOK_03 ? ? ? ? ? 7 2 ? ? ? ? ? ? ? ? ? 1 ? ? ? ? ? ? ?3 DATA
CHENZW ?PART_BOOK_CHENZW ?YES ? ? ? ? ?PART_BOOK_04 ? ? ? ? ? 7 3 ? ? ? ? ? ? ? ? ? 1 ? ? ? ? ? ? ?4 DATA ?
?
重點在上述分區的“子分區數”,我們可以看到,每一個按照列表的分區下面,又被按照日期被分為7個分區。

什么是Oracle的分區表 (轉 作者 陳字文)


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 国产夫妻久久线观看 | 亚洲一级毛片免观看 | 国产亚洲情侣久久精品 | 天天干视频 | 国产一级特黄aa级特黄裸毛片 | 欧美视频在线网站 | 老子影院午夜伦手机在线看 | 国产成人不卡亚洲精品91 | 不卡无毒免费毛片视频观看 | 国产乱人伦av在线a 国产乱人伦精品一区二区 国产乱人伦偷精品视频不卡 | 国产热热| 偷偷操不一样的久久 | 精品久久亚洲 | 天天操操操操操操 | 青青青在线观看免费视频精品 | 免费香蕉成视频成人网 | 国产乱人伦av在线a 国产乱人伦精品一区二区 国产乱人伦偷精品视频不卡 | 曰本毛片 | 狠狠综合久久久久综合小说网 | 欧美精品日韩一区二区三区 | 欧美妇性猛交视频 | 香蕉免费一区二区三区在线观看 | 久久99国产综合色 | 狠狠操大逼 | 91精品国产9l久久久久 | 成人毛片免费网站 | 久久99精品国产99久久 | 偷拍清纯高清视频在线 | 亚洲香蕉影院 | 性做久久久久久久久25的美女 | 免费人成网站在线高清 | 欧美午夜大片 | 奇米777四色影视在线看 | 欧美一级毛片视频 | 国产高清精品自在线看 | 亚洲免费视频一区二区三区 | 中文字幕国产综合 | 中文在线亚洲 | 日本特黄一级午夜剧场毛片 | 日本精品久久久久中文字幕 1 | www.九色.com|