三招讓Oracle表列管理更加簡單

來源:互聯網
上載者:User

  Oracle資料庫是目前為止最複雜的一個資料庫之一。也正是這種複雜性,讓Oracle資料庫能夠面對企業各種各樣的需求。不過大部分時候,資料庫管理員掌握一些技巧,可以讓資料庫維護工作變得簡單。筆者這裡就以Oracle資料庫中表列的管理為例,談談這方面的問題。

  一、 把列設定為UNUSED狀態,代替刪除。

  當資料庫部署完成之後,即使在資料庫使用過程中,資料庫管理員仍然可以對資料庫的表進行維護,如刪除列等等。刪除列將刪除表中每條記錄的相應列的值,同時釋放其所佔用的儲存空間。所以如果要刪除一個大表中的列時,由於其必須對每條記錄都進行相應的處理,為此這個刪除列的操作會佔用比較長的時間。如有個資料庫管理員一次在設計一個人員管理系統時,一開始是把人員的住址跟人員資訊表放置同一個表中。可是後來證明這個設計是錯誤的。一方面因為人員住址的欄位比較長,而且有些由於住址難以確定,這個欄位還是空的。另一方面,一個人員其可能住址變更了好幾次,而出於管理的需要,又要儲存起以前的住址資訊。為此最後一個人員可能同時對應多個住址資訊。所以後來資料庫管理員調整了設計,另外建立了一張表,然後利用人員編號把它們關聯起來。由於那時表中的紀錄已經比較多了,如果要刪除列的話,那麼可能這個刪除作業需要執行時間比較長。

  為了避免在資料庫使用高峰期間由於執行刪除列的操作而佔用過多的系統資源(而且時間比較長),為此筆者建議不要馬上採用DROP關鍵字來刪除列。而可以先用UNUSED關鍵字把某個列設定為不活躍狀態。如可以利用命令ALTER TABLE ADRESS SET UNUSED,把某個列設定為不活躍。如此設定之後,從使用者的角度來看,被設定為UNUSED狀態的列於被直接刪除的列之間是沒有任何區別的。使用者無法通過查詢或者在資料字典中看到這些列。而且即使在表中,也可以插入相同列名的列。簡單的說,對於使用者來說,這個設定為UNUSED的列就好像刪除了一樣。但是從資料庫角度來說,在是不一樣的。其這個列只是別設定為UNUNSED列,但是在資料庫中仍然是存在的。也就是說,這個列所佔用的儲存空間沒有被釋放。為此即使在資料庫啟動並執行高峰時期,為列加入這個標記也不會佔用多少的時間和系統資源。

  為此,筆者的意見是,當資料庫比較繁忙時而且資料庫表中的紀錄又比較多,則可以不從物理上刪除這個列,而先把這個列標記為UNUSED狀態。這可以減少因為刪除列而給資料庫正常使用帶來的負面影響。雖然這要犧牲一點硬碟空間,可是現在硬碟便宜。為了資料庫的效能,犧牲這點硬碟空間是值得的。等到資料庫比較空的時候,再把這些列刪除即可。這對於使用者來說,是不會受到任何影響的。這隻是在技術處理上的問題。

  為了便於管理這些UNUSED列,在Oracle資料庫中還提供了一張視圖(這張視圖的名字為USER_UNUSED_COL_TABS),協助資料庫管理員來管理這些列。通過查詢這張視圖,資料庫管理員可以瞭解資料庫哪些表中存在UNUSED列。然後資料庫管理員可以根據實際情況,一個月或者一年來清除一下。這不僅可以提高資料庫的運行效率,而且也不會因為刪除列的操作影響到使用者的正常使用。

  二、 給列表添加相關的注釋。

  俗話說,好記性不如爛筆頭。在資料庫設計的時候,給表或者列添加一些必要的注釋,可以提高其可讀性,也有利於後續的維護與升級。像筆者這種專業的資料庫設計與開發人員,往往一個人需要負責很多項目,即同時要負責多個企業的資料庫軟體。當項目數量一多,一年後可能就不知道某個資料庫的某張表到底用來做什麼用途。即使採用了比較合適的表名字編碼或者列名字編碼規則,但是憑藉這些簡單的代碼,仍然不能夠直觀的反應出這些代碼的含義。為此,在必要的時候,我們往往需要給表或者列添加相關的注釋,方便後續對其進行維護與升級。

  為了實現這個目的,我們可以利用COMMENT關鍵字。如COMMENT ON TABLE 表名 IS ‘注釋內容’即可。在使用這個命令的時候需要注意的是,注釋中的內容必須利用單引號括起來,而不是使用雙引號。因為如果注釋中含有特殊字元的話,如單引號、萬用字元等等,最好能夠採用其他的字元代替。如果非要用這些字元的話,那麼就需要採用逸出字元,讓資料庫系統認為這是普通的字元。通常情況下,注釋的內容可以多大4000個位元組,足夠資料庫管理員用來表述表的用途。另外在注釋的內容中可以包含標點符號、空白字元、特殊字元(不建議使用)等等。而且還可以跨越多個物理行,以提高可讀性等等。不過雖然其提供了長達4000個位元組的說明,但是資料庫管理員在寫注釋的時候,最好能夠短話短說。不然的話,以後要花大量的時間來讀這些備忘的內容,可不是一件好差事。未必筆者認為,在寫這個表注釋的時候,最好能夠點到為止,而不要想寫項目說明書那樣寫的面面俱到。

  • 1
  • 2
  • 下一頁

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.