日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

oracle表分区

發布時間:2023/11/30 编程问答 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 oracle表分区 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1.表空間:是一個或多個數據文件的集合,主要存放的是表,所有的數據對象都存放在指定的表空間中;一個數據文件只能屬于一個表空間,一個數據庫空間由若干個表空間組成,其中包括:
a.系統表空間:10g以前,默認系統表空間是System,10g包括10g以后,默認系統表空間是User,存放數據字典和視圖以及數據庫結構等重要系統數據信息。
b.Temp表空間:臨時表空間,安裝數據庫時創建。
c.用戶自定義表空間:用戶可以通過Create tablspace命令創建表空間。
2.分區表:當表中的數據量不斷增大,查詢數據的速度會變慢,應用程序的性能就會下降,這時就應該考慮對表分區;表進行分區后邏輯上還是一張完整的表,只是把表中的數據存放到不同的表空間(物理文件上),這樣查詢就不用掃描整張表。
3.什么時候使用分區表:
a.表的大小超過2GB。
b.表中包含歷史數據,新的數據被增加到新的分區中。
4.表分區的優缺點:
優點:(1)改善查詢性能:對分區對象的查詢可以僅搜索自己關心的分區,提高查詢效率。
? ? ?(2)增強可用性:如果表的某個分區出現故障,表在其他分區的數據仍然可用。
? ? ?(3)維護方便:如果表的某個分區出現故障,需要修復數據,只修復該分區即可。
? ? ?(4)均衡I/O:可以把不同的分區映射到磁盤以平衡I/O,改善整個系統性能。
缺點:已經存在的表沒有方法可以直接轉化為分區表。
5.表分區的幾種類型及操作方法:
a.范圍分區:按照指定的范圍來分區,這種分區方式是最常用的,例如按日期
CREATE TABLE MYCUSTOMER?
(?
? ? CUSTOMER_ID NUMBER NOT NULL PRIMARY KEY,?
? ? FIRST_NAME ?VARCHAR2(30) NOT NULL,?
? ? SEX ? ? ? CHAR(1)?
)?
PARTITION BY RANGE (CUSTOMER_ID)?
(?
? ? PARTITION CUS_PART1 VALUES LESS THAN (100) TABLESPACE CUS_TS01,?
? ? PARTITION CUS_PART2 VALUES LESS THAN (200) TABLESPACE CUS_TS02,
? ? PARTITION CUS_PART3 VALUES LESS THAN (maxvalue) TABLESPACE CUS_TS03
);
select count(*) cn from MYCUSTOMER PARTITION (CUS_PART1);
select count(*) cn from MYCUSTOMER PARTITION (CUS_PART2);
b.列表分區:該分區的特點是某列的值只有幾個,例如性別,身份證號,城市。
CREATE TABLE MYCUSTOMER?
(?
? ? CUSTOMER_ID NUMBER NOT NULL PRIMARY KEY,?
? ? FIRST_NAME ?VARCHAR2(30) NOT NULL,?
? ? SEX ? ? ? CHAR(1)?
)?
PARTITION BY LIST (SEX)?
(?
? ? ? PARTITION par_sexm VALUES ('m') TABLESPACE CUS_TS01,?
? ? ? PARTITION par_sexf VALUES ('f') TABLESPACE CUS_TS02
);
select count(*) cn from MYCUSTOMER PARTITION (par_sexm) where CUSTOMER_ID<10;
select count(*) cn from MYCUSTOMER PARTITION (par_sexf);
c.散列分區:這類分區是在列值上使用散列算法,以確定將行放入哪個分區中。當列的值沒有合適的條件時,建議使用散列分區。
CREATE TABLE MYCUSTOMER?
(?
? ? CUSTOMER_ID NUMBER NOT NULL PRIMARY KEY,?
? ? FIRST_NAME ?VARCHAR2(30) NOT NULL,?
? ? SEX ? ? ? CHAR(1)?
)?
PARTITION BY HASH (CUSTOMER_ID)?
(?
? ? ? PARTITION hash1 TABLESPACE CUS_TS01,?
? ? ? PARTITION hash2 TABLESPACE CUS_TS02,
? ? ? PARTITION hash3 TABLESPACE CUS_TS03
);
select count(*) cn from MYCUSTOMER PARTITION (hash1);
select count(*) cn from MYCUSTOMER PARTITION (hash2);
select count(*) cn from MYCUSTOMER PARTITION (hash3);

總結

以上是生活随笔為你收集整理的oracle表分区的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。