2006年07月13日

有關synonym的討論

 生產系統上不建議使用synonym, 對於synonym的查詢會增加幾次recursive sql,
會對shared pool, library cache, row cache增加負擔..



Oracle的數據字典的內部處理是不會使用synonym的, 他創建這些synonym給我們
DBA使用, 只是為了我們的方便, 另外這些數據字典視圖的查詢也不會很頻繁..

如果 (hard) parse 很多,同義詞,尤其是 public 同義詞 可能會有一定的影
響,到底多大倚賴於系統特性。
因為對於對象的搜索順序: 私有對象--- > 私有同義詞----> 公有同義詞


關鍵在於(hard) parse 的數量,一個涉及良好的系統, hard parse很少的情況
下,也就無所謂通過什麼形式(synonym / 直接spicalfy object.)去知道真正的
OBJECT了……


不過,出於程序移植的方便,很多時候會不把owner的名字寫在
object前面了。不
然的話,如果有時候需要把整個Application object移到其他database, 就必須使
用特定的用戶名,很是侷限……

另一方面,有時候出於安全的考慮,可能不會直接用object的owner 來連接
database,而是使用不同的權限的user 來連接DB.比如說,有一些程序可以使用只
需query某個table,那麼,它只需用到具有query這幾個table權限的用戶來連接。
而另一個程序需要所有DML權限,那麼,我們會給他一個具有更多權限的用戶。有
時候,可能Object的Owner 完全不會拿來給應用連接,以避免DDL無操作……

為了滿足以上兩個要求,同義詞是無可避免的……

整個討論:http://www.itpub.net/589816,1.html


Posted by my_work at 樂多Roodo! │20:45 │回應(0)引用(0)DB
樂多分類:網路/3C 工具:編輯本文
Ads by Roodo! 

引用URL

http://cgi.blog.roodo.com/trackback/1883582