Java 开发中之十:Oracle中的锁,表分区,大对象的操作
锁:数据的完整性
行锁:insert update delete
1、手动的锁定 select .... for update of sal
2、等待资源时间:select .... for update of wait 1
select * from emp where empno=7369 for update of sal; 这个时候别人就不能更新empno=7369这条数据了,这个时候只要当前用户去commit下就可以了,因为别人还处于等等状态。
当然虽然这样只锁定了sal 但实际上整个表的行都不能更新
表锁
共享锁:查看功能可以,不能修改,删除,允许其它用户放置其它的的共享锁 lock table emp in share mode; 这个时候别的就只能查看,其它的操作除了lock table emp in share mode 可以,其它不可以。
共享更新锁:lock table emp in share update mode;
排它锁:独占方式: lock table emp in exclusive mode; 您想锁这个但别人也想排它锁,则只能等
如:lock table emp in exclusive mode wait; 所以最好加上wait 1加上时间
表分区: 给表添加逻辑划分--存放在物理文件的X个位置,如何理解呢:就是数据分成一块一块的存放起来,查出来就快很多
范围分区:
create table emp1
(
empno number,
ename varchar2(10),
sal number(10)
)
partition by range(sal)
(
partition p1 values less than(1500),
partition p2 values less than(2500),
partition p3 values less than(maxvalue)
)
select * from emp1 partition(p1);查看第一区p1中的数据
alter table emp1 add partition p4 values less than(500);
ORA-14074: 分区界限必须调整为高于最后一个分区界限
散列分区,列表分区
create table emp1
(
empno number,
ename varchar2(10),
sal number(10)
)
partition by hash(sal) -- partition by list(sex)
(
partition p1 ,
partition p2
)
DSS OLAP 都是海量数据的处理,数据仓储性才会用到表分区
OLTP:在线事务形
select * from emp
create table EMP1 ( empno NUMBER(4) not null, ename VARCHAR2(10), job VARCHAR2(9), mgr NUMBER(4), hiredate DATE, sal NUMBER(7,2), comm NUMBER(7,2), deptno NUMBER(2) )
partition by range(sal)--范围分区 (
partition p1 values less than (1500),
partition p2 values less than (2500),
partition p3 values less than (maxvalue) );
partition by hash(sex)---hash分区 (
partition p1,
partition p2 );
partition by list(sex)---列表分区 (
partition p1 values ('man'),
partition p2 values ('womaan') );
partition by range(hiredate)--用时间来分区 (
partition p1 values less than (to_date('1999-06-01'),'yyyy-mm-dd'),
......................
insert into .......(,,,,,'1999-08-23');
如果有一张表了还要建表分区,还不如新弄一张表,然后在改名字 renamed oldtable to zk;
1:一般是数据是海量的,
2:数据仓库型(DSS--OLAP)更新时少,查询多
3:事务处理系统OLTP(增删改)比较多
大对象的操作
blog 2进制<4G
clog 文本 <4G
---设置指计指向的位置
create or replace directory bfile_dir as 'c:\oracle_bfile';
--处理大数据对象的操作
create table bfile_content(
file_name varchar2(40) not null,
--保存指几文件的指针
bfile_column bfile not null--表示一个指针指向一个对象
)
insert into bfile_content values('1.jpg',bfilename('bfile_dir','1.jpg')); bfilename是一个函数(目录,文件名),其中bfile_dir指向c:\oracle_bfile'
posted on 2012-12-13 20:47 peter.peng 阅读(1091) 评论(0) 编辑 收藏 举报