oracle 大数据查询优化的方案
某数据库中的一张表A,表A的数据库量现在大概有10亿条数据之多.
最初的做法是全部存放在一个表空间中.造成现在的查询速度龟爬似的.现在不得不对数据库做出重新评估和优化.
最初的前提:
1.中应该建立的索引都已具备
2.查询语句都已经做到优化:现在类似于 select count(1) from A 这么简单的一句统计SQL都需要100S左右
tangren 回复
这么多数据,一般都要将一个时间段以前的数据归档到另一台服务器。
减少OLAP环境的负荷,统计可以通过日结等生成报表。
还有分区不一定能够提高查询速度。分区主要是为提高扩展性,高可用性设计,便于管理。
如果使用了分区,你在查询中要按分区键来查询才能利用分区排除。
索引也进行相应的分区,可建立本地分区索引。
10亿数据量是多长时间?需要每小时建立一个分区?
oracle 9i、10g都不能自动分区,你可以生成一个定时运行的脚本,或建立一个JOB来定时执行,
或者一次手动建立足够多的分区。
相关文档:
Data Pump 反映了整个导出/导入过程的完全革新。不使用常见的 SQL 命令,而是应用专
用 API(direct path api etc) 来以更快得多的速度加载和卸载数据。
1.Data Pump 导出 expdp
例
子:
sql>create directory dpdata1 as '/u02/ ......
ORACLE EXPDP/IMPDP
2010-01-22 17:07
调用EXPDP
使用EXPDP工具时,其转储文件只能被存放在DIRECTORY对象对应的OS目录中,而
不能直接指定转储文件所在的OS目录.因此,使用EXPDP工具时,必须首先建立DIRECTORY对象.并且需要为数据库用户授予使用
DIRECTORY对象权限.
CREATE DIRECTORY dump dir AS ‘DUMP’; ......
create database --创建数据库
create database test
controlfile reuse
datafile 'd:\data\system1.dbf' size 100m autoextend on next 100m maxsize unlimited
sysaux datafile 'd:\data\sysaux1.dbf' size 100m reuse autoextend on next 100m maxsize unlimited
default temp ......
已经安装orcale 9i 和pl/sql(6.0)
OracleJobSchedulerORCL、OracleOraDb10g_home1iSQL*Plus
OracleOraDb10g_home1TNSListener
OracleServiceORCL
第一个是oem控制台服务进程
第二个是定时器和isql*plus的服务进程
第三个是监听器的服务进程
最后是数据库服务进程
1. pl/sql
客户机安装后还要配置tnsnames.ora文件, ......