1 如果一个多分区的表,要将某个分区的数据导出去,可以通过表空间导出的方式导出,方法步骤为:
1)建立一个临时表及临时索引
2) 通过交换分区的方法互换:
alter table sale_data exchange partition sales_2009_1 with
table tmp_sale_data_2009_1 including indexes with validation;
3)导出整个表空间
4) 将离线的数据库导入新的表空间
5) 将导入的临时表中的数据和索引重新交换到分区表中去
2 delete不能释放其表空间,因为表的高水位线并不能下降,必须用drop或者truncate
操作。
3 哈希分区
create table t_hash partition by hash(object_id) partitions 8 as select * from dba_objects;
select partition_name,count(*) from user_extents where segment_name='T_HASH' group by partition_name
分区的数量应该是2的N次方为好
哈希区,不能drop,split及merge分区,但可以truncate方式清除分区数据,比如
alter table t_has truncate partition sys_p48;
注意的是,如果hash列上的数据大量重复,则会造成数据分布不均匀
4 列表分区
....partition by list(sales_date)
(partition abc values('xxx','....'),
partition def values('xxxx','yyyy'),
partition hijk values(default));//默认分区
5 对重复率很低的一个表,当小范围扫描时,哈希分区通过索引访问数据的效率高于
范围分区;当扫描值足够大时,范围分区性能好于哈希分区。
6 SQL语句执行时,第一次,ORACLE会对其进行硬解析,会额外站用一些资源,因为要对其语法,语义分析,可以通
过trace文件看到
alter session set sql_trace=true;
7 位图索引,比如scott用户的emp表中的job列,重复很高,可以建立位图索引
create bitmap index emp_bit_ind on emp(job);
1)位图索引占用空间比较小
2)位图索引对于数据重复率高的数据进行AND,OR操作,比B树好,因为都是AND OR运算,对于0和1
3)对于比如性别,年龄,位置这些类型的字段,用位图索引比较好
4)位图索引适合OLAP,不大适合OLTP,因为OLTP不断修改,不断写;因为位图索引中一个索引键中可能对应多条
记录,更新时容易发生死锁。
附:看死锁
select distinct sid from v$mystat;
select sid,type,id1,id2,lmode,request,ctime,block from v$lock where sid in(查出来的sid1,查出来的sid2)
8 全文索引
1) create index t2_text_idex on t2(name) indextype is ctxsys.context
select table_name,index_name from user_indexes;
可以看到创建了dr$开头的4个表,为全文索引的基表,而索引 t2_text_idex本身不占空间。会产生4个基表
DR$_索引名_IDEX$I为一个大表,存储了索引字段通过语法分析器处理后的关键字信息即分割词汇。
2)全文索引占空间比较大,要注意
3)得到表和全文索引表占用的空间
select trunc(bytes/(1024*1024)) table_size_M from user_segments where segment_name='T1' order by
1;
获得全文索引大小:
select ctx_report.index_size('T1_IDX') FROM DUAL
4) 建立全文索引后,比如dml后,不会马上反映到全文索引中去
alter index t_idx rebuild parameters('sync')
5)删除记录后,全文索引马上有效果
6) 而更新记录也需要手工同步
7) 创建表时,参数指定同步更新索引
create index t_idex on t(name) indextype is ctxsys.context parameters('sync(on commit)')
9 ctx_report工具包,提供关于全文索引的很多东西
<<让oracle跑得更快2>>读书笔记(1)
转载mb5c80f4c73b73a 博主文章分类:数据库相关/oracle
下一篇:产品经理备忘
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
<<让oracle跑的更快1>>读书笔记2
分析,因为谓词不同而...
oracle sql SQL 数据块 -
让javascript跑得更快
作者:Cal Henderson下一代web应用让javascript和
JavaScript CSS PHP 应用服务器 浏览器 -
如何让JOIN跑得更快?
回顾上面两大类、各场景 JOIN,采用 SPL 分情况提供的高性能算法,可以
数据库 性能优化 主键 外键 字段 -
如何让JOIN跑得更快?
JOIN 一直是数据库性能优化的老大难问题,本来挺快的查询,一旦涉及了几个 JOIN,性能就会陡降
数据库 sql 数据仓库 主键 外键 -
如何让JOIN跑得更快
JOIN 一直是数据库性能优化的老大难问题,本来挺快的查询,一旦JOIN。
数据库 sql 数据仓库 主键 外键 -
《hadoop实战2》读书笔记(1)
1.Map与Reduce将输出转化为对的默认方法是:将每行的
校验和 mapreduce 应用程序