BLOCKSIZE不同值的读取效率实验
实验概述:
本实验是为了验证不同BLOCKSIZE大小对读取含有BLOB大字段表格的效率影响
实验环境:
服务器 windows server 2008+ oracle 11g 位于325机房
客户端 windows XP 位于313机房
实验数据:
1.存储在BLOB的数据为50张武测正射影响图片 wtusm.bmp 大小为(10.2M)总数据量为50*10.2M = 510M
2.存储在BLOB的数据为50张武测正射影响图片 wtusm.bmp 大小为(572K)总数据量为50*572K =28.6M
实验步骤:
1.创建两个不同blocksize 的表空间
CREATE TABLESPACE test8
DATAFILE 'M:\DATA\test8k_090415.dbf' SIZE 1024M
AUTOEXTEND ON NEXT 256M MAXSIZE 10240M
BLOCKSIZE 8K
EXTENT MANAGEMENT LOCAL AUTOALLOCATE
SEGMENT SPACE MANAGEMENT AUTO;
CREATE TEMPORARY TABLESPACE test8_temp
TEMPFILE 'M:\DATA\test8k_temp_090415.dbf' SIZE 256M AUTOEXTEND ON;
CREATE TABLESPACE test16
DATAFILE 'M:\DATA\test16k_090415.dbf' SIZE 1024M
AUTOEXTEND ON NEXT 256M MAXSIZE 10240M
BLOCKSIZE 16K
EXTENT MANAGEMENT LOCAL AUTOALLOCATE
SEGMENT SPACE MANAGEMENT AUTO;
CREATE TEMPORARY TABLESPACE test16_temp
TEMPFILE 'M:\DATA\test16k_temp_090415.dbf' SIZE 256M AUTOEXTEND ON;
2.创建两个用户,并设置默认表空间,以及授于相应权限
创建用户
CREATE USER test8 INDENTIFIED BY test DEFAULT TABLESPACE LXMTEST_DATA1,TEMPORARY TABLESPACE TEMP;
给用户使用表空间的特权:
ALTER USER db_block_size16 quota unlimited on LXMTEST_DATA1
给用户制授权:
grant CREATE SESSION to db_block_size16;
grant ALTER SESSION to db_block_size16;
grant CREATE CLUSTER to db_block_size16;
grant CREATE DATABASE LINK to db_block_size16;
grant CREATE SEQUENCE to db_block_size16;
grant CREATE VIEW to db_block_size16;
grant CREATE ANY SYNONYM to db_block_size16;
grant CREATE PUBLIC SYNONYM to db_block_size16;
grant CREATE TABLE to db_block_size16;
grant CREATE TYPE to db_block_size16;
grant CREATE USER to db_block_size16;
grant DROP ANY SYNONYM to db_block_size16;
grant DROP PUBLIC SYNONYM to db_block_size16;
grant DROP USER to db_block_size16;
grant SELECT ANY TABLE to db_block_size16;
同样创建另一用户test16/test
3.用OCI 编写入库代码
代码实例见 附件 blobexp.rar
4.采用PL*SQL Developer进行读取时间测试
针对数据1,进行读取时间测试,结果如下:
1,全表扫描,获取表内所有数据
全表扫描 | 1 | 2 | 3 | 4 | 5 | 平均 |
8K | 48.344 | 48.094 | 47.626 | 47.719 | 47.594 | 47.8754 |
16K | 48.032 | 47.673 | 47.327 | 47.594 | 47.486 | 47.6224 |
|
|
|
|
|
|
|
表1
图1
2.有选择读取,获取表内25条数据
选读25条 | 1 | 2 | 3 | 4 | 5 | 平均 |
8K | 24.688 | 24.703 | 24.751 | 24.781 | 24.641 | 24.7128 |
16K | 24.626 | 24.593 | 24.578 | 24.626 | 24.844 | 24.6534 |
表2
图2
3.只读一条的时间:
任读一条 | 1 | 2 | 3 | 4 | 5 | 平均 |
8K | 0.984 | 0.953 | 0.937 | 0.953 | 0.953 | 0.956 |
16K | 0.984 | 0.954 | 0.953 | 0.953 | 0.953 | 0.9594 |
表3
图3
针对数据2进行读取实验
| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 平均 |
8K | 4 | 3.953 | 3.952 | 4.297 | 3.985 | 3.985 | 3.984 | 3.953 | 3.969 | 4 | 4.0078 |
16k | 4.297 | 4.395 | 4 | 3.968 | 3.938 | 4.11 | 3.984 | 3.969 | 3.952 | 3.953 | 4.0566 |
表4
图4
实验分析
针对上述数据进行实验,发现blocksize 的大小对数据读取效率影响不大,与官方推荐及预期效果发生矛盾,初步推断可能实验存在缺陷,希望各位帮我检查检查。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/17267437/viewspace-590758/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/17267437/viewspace-590758/