鎖:數據庫控制共享資源併發訪問的機制,用於保護正在被修改的數據
直到提交或回滾了事務之後,其他用戶纔可以更新數據
分類:行級鎖和表級鎖
*/
-- 行級鎖:行級鎖是一種排他的鎖,防止其他事務修改此行
-- Oracle會自動在下列語句中使用行級鎖
insert
update
delete
select ... for update -- 允許用戶一次鎖定多行記錄進行更新
/*
表級鎖,使用命令顯式的鎖定表,應用表級鎖的語法
分類:1.行共享;2.共享;3.排他;4.行排他:5.共享行排他
共享鎖(SHARE)
1.鎖定表,僅允許其他用戶查詢表中的行
2.禁止其他用戶插入、更新和刪除行
3.多個用戶可以同時在同一個表上應用此鎖
排他(EXCLUSIVE) – 限制最強的表鎖,僅允許其他用戶查詢該表的行。禁止修改和鎖定表
死鎖:
當兩個事務相互等待對方釋放資源時,就會形成死鎖
Oracle會自動檢測死鎖,並通過結束其中的一個事務來解決死鎖
*/
lock table tableName in mode MODE
/*
分區:Oracle允許用戶將一個表分成多個分區,與表的創建一起
優點:1.用戶可以執行查詢,只訪問其中特定的分區;
2.將不同的分區存儲在不同的磁盤,提高訪問性能和安全性
3.可以獨立備份和恢復分區。
*/
-- 範圍分區,以表中一個列或一組列的值得範圍分區
-- 關鍵字:partition by range values less than
create table person1(
pid number primary key,
birthday date
)
partition by range (birthday)(
partition p1 values less than (to_date('1980-01-01','yyyy-mm-dd')),
partition p2 values less than (to_date('1990-01-01','yyyy-mm-dd')),
--partition p1 values less than (maxvalue)
)
insert into person1 values(1,'ysjian',to_date('1965-02-03','yyyy-mm-dd'));
insert into person1 values(2,'ysjian',to_date('1985-02-03','yyyy-mm-dd'));
insert into person1 values(3,'ysjian',to_date('1995-02-03','yyyy-mm-dd'));
select * from person1 partition(p2);
--散列分區:允許用戶對不具有邏輯範圍的數據進行分區,關鍵字:hash
-- 通過在分區鍵上執行hash函數決定存儲的分區,將數據平均分配到不同的分區
create table person2(
pid number primary key,
pname varchar2(20),
birthday date
)
partition by hash(birthday)(
partition p1,
partition p2,
partition p3,
)
--partitions 3;上面四個分區等價這個
-- 列表分區:允許用戶將不相關的數據組織在一起,關鍵字:list,values
create table person3(
pid number primary key,
birthday date,
address varchar2(50)
)
partition by list(address)(
partition hubei values('武漢','黃石','黃岡'),
partition shanxi values('西安','渭南','寶雞')
)
--複合分區,關鍵字:subpartition
create table person4(
pid number primary key,
birthday date,
address varchar2(50)
)
partition by range(birthday)
subpartition by hash(birthday)
subpartitions 4(
partition p1 values less than (to_date('1980-01-01','yyyy-mm-dd')),
partition p2 values less than (to_date('1990-01-01','yyyy-mm-dd')),
partition p3 values less than (to_date('2000-01-01','yyyy-mm-dd'))
)