qgen使用
qgen是产生22个查询语句的生成器,运行的同时需要dbgen queries下的22个sql模板和dbgendists.dss字典文件。
首先按与dbgen相同的方法组建工程qgen,将得到的dbgenDebugqgen.exe,dbgenqueries下的22个sql查询模板和dbgendists.dss字典文件移动到新建的文件夹to_query中。
然后打开cmd,cd到to_query目录,执行指令如下
qgen–d 1 > d1.sql
指令解释:-d代表生成default格式的sql语句,1代表使用dbgenqueries下的第1个模板,> d1.sql代表利用命名管道将控制台的输出重定向到当前目录的d1.sql中。
最后,生成的sql语句还有一定的问题,需要做一些修改。结尾有set rowcount -1 go语句的将之去掉,将substring函数修改为substr函数,将表别名前面的as关键字去掉,将子查询构成的别名后的列名移动到子查询的select子句。
按照该格式一共需要生成22个default 的sql文件,然后在sqlplus中set timing on开启计时器,@刚才生成的sql文件,进行测试
如果是需要强制并行查询,则在sqlplus中设置
altersession force parallel query
无论原始表是否开启了并行,设定了什么并行度,查询优化器都采用并行查询。
sqlldr补充
首先,sqlldr的加载有2种模式,常规路径和直接路径,前者要将数据转化为INSERT语句,通过SGA区加载,后者将数据在内存中组成数据库的数据块格式,直接写入数据文件,避免了语句解释和记录日志的开销,因此在类似数据仓库的大量数据导入时,一般采用直接路径加载。
然后,加载方式除INSERT外,还可以取值APPEND、REPLACE和TRUNCATE。要执行INSERT,必须保证表为空,否则sqlldr报错,不能继续执行。如果想向表中增加记录,可以指定加载选项为APPEND;为了替换表中已有的数据,可以使用REPLACE或TRUNCATE。REPLACE使用DELETE语句删除全部记录;因此,如果要加载的表中已经包含许多记录,这个操作执行得很慢。TRUNCATE使用 TRUNCATE SQL命令,执行更快,因为它不必物理地删除每一行。但是TRUNCATE不能回退。要小心地设置这个选项,有时候其他参数也会影响这个选项。
最后,如果同一个表有多个外部数据文件,那么通过设置Parallel参数=TRUE,采用并行加载,可以提高加载速度,例如:
sqlldr scott/tiger control=lineitem.ctldirect=true parallel=true 内容来自17jquery
注意Parallel参数只是表示允许多个sqlldr进程同时加载,而不是对当前语句采用并行方式,也就是说,一个sqlldr命令只能串行加载。
Windows操作系统不支持&语法的后台进程,但是可以用打开多个cmd窗口,分别执行多个不同的sqlldr语句的方式,也能达到相同的效果。需要指出的是,服务器的I/O能力对加载有巨大的影响,如果读写的I/O带宽已经用满,那么实际上就是sqlldr在等待I/O完成,那么此刻再启动多个sqlldr也不会提高加载性能。
EXP/IMP使用
导入(IMP)/导出(EXP)是ORACLE幸存的最古老的两个操作系统命令行工具,Exp/Imp是一个好的转储工具,特别是在小型数据库的转储,表空间的迁移,表的抽取,检测逻辑和物理冲突等中有不小的功劳。它作为小型数据库的物理备份后的一个逻辑辅助备份,也是不错的手段。对于越来越大的数据库,特别是TB级数据库和越来越多数据仓库的出现,EXP/IMP越来越力不从心了,这个时候,数据库的备份都转向了RMAN和第三方工具。
简单的来说,exp和imp可以将oracle中的数据库,表等内容导出成文件,既可以称作备份,又可以做多台计算机间数据库的移植,例如:
exp scott/tiger@orcl file=d:expfile.dmp tables=(PART) 17jquery.com
imp scott/tiger@orcl file=d:expfile.dmp tables=(PART)
qgen是产生22个查询语句的生成器,运行的同时需要dbgen queries下的22个sql模板和dbgendists.dss字典文件。
首先按与dbgen相同的方法组建工程qgen,将得到的dbgenDebugqgen.exe,dbgenqueries下的22个sql查询模板和dbgendists.dss字典文件移动到新建的文件夹to_query中。
然后打开cmd,cd到to_query目录,执行指令如下
qgen–d 1 > d1.sql
指令解释:-d代表生成default格式的sql语句,1代表使用dbgenqueries下的第1个模板,> d1.sql代表利用命名管道将控制台的输出重定向到当前目录的d1.sql中。
最后,生成的sql语句还有一定的问题,需要做一些修改。结尾有set rowcount -1 go语句的将之去掉,将substring函数修改为substr函数,将表别名前面的as关键字去掉,将子查询构成的别名后的列名移动到子查询的select子句。
按照该格式一共需要生成22个default 的sql文件,然后在sqlplus中set timing on开启计时器,@刚才生成的sql文件,进行测试
如果是需要强制并行查询,则在sqlplus中设置
altersession force parallel query
无论原始表是否开启了并行,设定了什么并行度,查询优化器都采用并行查询。
sqlldr补充
首先,sqlldr的加载有2种模式,常规路径和直接路径,前者要将数据转化为INSERT语句,通过SGA区加载,后者将数据在内存中组成数据库的数据块格式,直接写入数据文件,避免了语句解释和记录日志的开销,因此在类似数据仓库的大量数据导入时,一般采用直接路径加载。
然后,加载方式除INSERT外,还可以取值APPEND、REPLACE和TRUNCATE。要执行INSERT,必须保证表为空,否则sqlldr报错,不能继续执行。如果想向表中增加记录,可以指定加载选项为APPEND;为了替换表中已有的数据,可以使用REPLACE或TRUNCATE。REPLACE使用DELETE语句删除全部记录;因此,如果要加载的表中已经包含许多记录,这个操作执行得很慢。TRUNCATE使用 TRUNCATE SQL命令,执行更快,因为它不必物理地删除每一行。但是TRUNCATE不能回退。要小心地设置这个选项,有时候其他参数也会影响这个选项。
最后,如果同一个表有多个外部数据文件,那么通过设置Parallel参数=TRUE,采用并行加载,可以提高加载速度,例如:
sqlldr scott/tiger control=lineitem.ctldirect=true parallel=true 内容来自17jquery
注意Parallel参数只是表示允许多个sqlldr进程同时加载,而不是对当前语句采用并行方式,也就是说,一个sqlldr命令只能串行加载。
Windows操作系统不支持&语法的后台进程,但是可以用打开多个cmd窗口,分别执行多个不同的sqlldr语句的方式,也能达到相同的效果。需要指出的是,服务器的I/O能力对加载有巨大的影响,如果读写的I/O带宽已经用满,那么实际上就是sqlldr在等待I/O完成,那么此刻再启动多个sqlldr也不会提高加载性能。
EXP/IMP使用
导入(IMP)/导出(EXP)是ORACLE幸存的最古老的两个操作系统命令行工具,Exp/Imp是一个好的转储工具,特别是在小型数据库的转储,表空间的迁移,表的抽取,检测逻辑和物理冲突等中有不小的功劳。它作为小型数据库的物理备份后的一个逻辑辅助备份,也是不错的手段。对于越来越大的数据库,特别是TB级数据库和越来越多数据仓库的出现,EXP/IMP越来越力不从心了,这个时候,数据库的备份都转向了RMAN和第三方工具。
简单的来说,exp和imp可以将oracle中的数据库,表等内容导出成文件,既可以称作备份,又可以做多台计算机间数据库的移植,例如:
exp scott/tiger@orcl file=d:expfile.dmp tables=(PART) 17jquery.com
imp scott/tiger@orcl file=d:expfile.dmp tables=(PART)
关键字:tpc-h, oracle TPC-H数据生成与