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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

oracle的簇与簇表

發布時間:2025/3/20 编程问答 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 oracle的簇与簇表 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

簇由一組共享多個數據塊的多個表組成,它將這些表的相關行一起存儲到相同數據塊中,這樣可以減少查詢數據所需的磁盤讀取量。創建簇后,用戶可以在簇中創建表,這些表稱為簇表。

例如有如下兩個表:student和achievement.。其中,student表存儲學生信息,需要使用SID字段(存儲學生ID);achievement表存儲學生成績信息,也需要使用SID字段。也就是說,student和achievement需要共享學生ID數據塊。

注意:如果用戶在自己的模式中創建簇,則必須具有create cluster權限和unlimited tablespace系統權限;如果想在其他模式中創建簇,則還必須具有create any cluster系統權限

創建簇和簇表

創建簇

創建簇,需要使用create cluster語句,例如創建一個名為stu_ach的簇,如下: [sql]?view plain?copy
  • create?cluster?stu_ach(sid?number)??
  • pctused?40??
  • pctfree?10??
  • size?1024??
  • storage??
  • (initial?128k??
  • next?128k??
  • minextents?2??
  • maxextents?20??
  • )tablespace?huizhi;??
  • 上面創建簇stu_ach時,指定通過SID字段來對簇中的表進行聚簇存儲,這個SID字段就可以稱之為聚簇字段。 注意:size子句用來為聚簇字段提供指定的數據塊數量。例如,將size設置為1024,即表明簇中的聚簇字段記錄只能存儲在1024個數據塊中。

    創建簇表

    創建簇表,需要使用cluster子句指定所使用的簇和簇字段。 例如,在stu_ach簇中創建兩個簇表:student和achievement。如下: [sql]?view plain?copy
  • create?table?student(??
  • sid?number,??
  • sname?varchar2(8),??
  • sage?number??
  • )??
  • cluster?stu_ach(sid);??
  • --表已創建??
  • create?table?achievement(??
  • aid?number,??
  • score?number,??
  • sid?number??
  • )??
  • cluster?stu_ach(sid);??
  • --表已創建??
  • 上例在創建student和achievement表時,使用cluster子句指定它們所使用的簇為stu_ach,所使用的簇字段為SID。 提示:將student和achievement兩個表組成一個簇后,在物理上oracle會將這兩個表中每個學生的學生信息和該學生的所有成績信息存儲到相同的數據塊中。 現在向student表中添加記錄,如下: [sql]?view plain?copy
  • insert?into?student?values(1,'小明',24);??
  • 發現還無法向簇表中添加記錄。 注意:為了能夠向簇表中添加記錄,還需要首先為簇建立索引。

    創建簇索引

    簇索引與簇表不同,它并不存在于簇中,而是與普通索引一樣需要具有獨立的存儲空間。 例如,為簇stu_ach建立一個簇索引,如下: [sql]?view plain?copy
  • create?index?stu_ach_index??
  • on?cluster?stu_ach??
  • tablespace?huizhi;??
  • 上例為簇stu_ach建立了一個名為stu_ach_index的簇索引。創建簇索引后,就可以向簇表中添加記錄了。

    管理簇

    對一個簇的管理主要是修改簇和刪除簇。如果用戶想要管理簇,則必須具有alter any cluster系統權限。

    修改簇

    修改一個簇,主要是修改簇的如下屬性值:1.物理存儲屬性,包括pctfree、pctused、initrans、maxtrans和storage。2.為了存儲簇鍵值的所有行所需空間的平均值size。3.默認的并行度。

    刪除簇

    1.刪除一個空簇:當一個簇中不包含簇表時,刪除該簇可以使用drop cluster cluster_name語句。2.刪除一個含有簇表的簇:需要使用drop cluster...including tables語句,如下[sql]?view plain?copy
  • drop?cluster?stu_ach?including?tables;??
  • 另外,如果某個簇含有簇表,并且有外鍵約束,則需要使用drop cluster...including tables cascade constraints語句刪除該簇。如下:[sql]?view plain?copy
  • drop?cluster?stu_ach?including?tables?cascade?constraints;??
  • 總結

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

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