首先您需要了解什麼是PCTFREE
。在一個非常簡單的定義中,您可以定義PCTFREE
參數用於將塊的百分比設置爲reserved
對於可能的updates
已包含在該塊中的行。例如,假設你CREATE TABLE
語句中指定下列參數:
PCTFREE 20
這表明用於此表的數據段的每個數據塊的20%
將保持免費的,可以用於每個塊內已有行的可能更新。 較大PCTFREE具有以下效果:
•儲量更多的空間以備將來更新現有表中的行
•可能需要對於相同量的插入的數據的多個塊(插入 針對每個塊更少的行)
這就是爲什麼你發現改進的原因。
其次,增加你的PCTFREE你必須保持低於點記住,如果你決定不使用默認的
•PCTFREE和PCTUSED之和必須等於或小於100
•如果總和等於100,則Oracle嘗試保留不多於自由空間,並且處理成本最高。
•100與PCTFREE和PCTUSED之和之差(如PCTUSED 75,PCTFREE 20)之間的差異越小,則在某些性能成本下使用效率更高的空間。
因此,簡單地更改PCTFREE 50將不會帶來更多優勢。根據您嘗試在數據庫上執行的活動,您必須設置這些值。在這裏閱讀不同的場景,你必須使用什麼樣的價值。 Here
最好的辦法是與體改值下降並創建表:
CREATE TABLE players
(code NUMBER(10) PRIMARY KEY,
lastname VARCHAR(20),
firstname VARCHAR(15),
position VARCHAR2(20),
team VARCHAR2(20))
PCTFREE 10
PCTUSED 40
STORAGE
(INITIAL 25K
NEXT 10K
MAXEXTENTS 10
MINEXTENTS 3);
你怎麼知道PCTFREE與死鎖問題有關?您是否查看死鎖跟蹤文件以查找兩個相關的SQL語句和對象ID?在我的經驗中,死鎖總是由兩個SQL語句引起的,這兩個SQL語句以不同的順序競爭相同的鎖,未索引的外鍵,或者針對具有位圖索引的對象運行多個DML。人們經常希望有一些神奇的表設置來使死鎖消失,但不幸的是,99%以上的所有死鎖都是應用程序錯誤。 –