wangdonsy 发表于 2008-03-24 21:52

BCP慢的问题

原来的系统是 SCO5 sybase11,数据库的设备文件全在阵列上面,由于阵列硬盘和服务器硬盘掉电坏掉,把原来每天以二进制格式BCP出的数据恢复到现新服务器上,新服务器是HPML370G5 系统是REDHAT4UP464位,SYBASE是12.5.4,4G内存。本地四块SAS盘做的RAID5,把原来的备份的二进制文件FTP到新服务器上面,发现小文件恢复的速度还可以,但是大文件特别慢,BCP单个 900M的数据文件要近二十个小时,怎么能够改进一些,表的索引和触发器都以删掉。
服务器和sybase 配置参数如下

os
kernel.shmmax =4294967296
sybase

sp_configure "max memory",1300000
go
sp_configure "allocate max shared mem",1
go
sp_cacheconfig "default data cache","1120M"
go
sp_configure "procedure cache size",240000
go
sp_configure "allocate max shared mem",0
go
sp_configure "number of open objects",5000
go
sp_configure "number of pre-allocated extent",20
go
sp_poolconfig "default data cache","80M","4K"
go
sp_poolconfig "default data cache","160M","8K"
go
sp_poolconfig "default data cache","240M","16K"
go
sp_configure "number of open indexes",4000
go
sp_configure "number of devices",25
go
sp_configure "tcp no delay",1
go
sp_configure "number of user connections",250
go
sp_configure "number of locks",90000
go


[ 本帖最后由 wangdonsy 于 2008-3-24 21:56 编辑 ]

chuxu 发表于 2008-03-25 13:12

数据库是文件系统还是裸设备?
raid5也不应这么慢呀,
bcp 的时候sar -d 看一下系统的IO,手工执行一下dd看一下别的文件操作的IO情况

wangdonsy 发表于 2008-03-26 13:22

数据库是文件系统
建1G文件用的时间
# timedd if=/dev/zero of=1 count=1024 bs=1000000
1024+0 records in
1024+0 records out

real    0m3.895s
user    0m0.000s
sys   0m1.791s
# iostat
Linux 2.6.9-42.ELsmp (back)   03/26/2008

avg-cpu:%user   %nice    %sys %iowait   %idle
         8.49    0.00   12.36   19.77   59.38

Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn
cciss/c0d0      136.55      1174.40      1376.85   61358716   71936092
cciss/c0d0p1      0.16         0.33         0.00      16998          4
cciss/c0d0p2   61.74       429.13       478.43   22420478   24996472
cciss/c0d0p3    135.00       699.93       806.19   36569002   42120928
cciss/c0d0p5      5.67      21.03      41.61    1098520    2173896
cciss/c0d0p6      0.39         0.83         0.01      43350      392
cciss/c0d0p7      0.38         0.39         0.00      20292         16
cciss/c0d0p8      0.89         5.09         2.24   266196   117000
cciss/c0d0p9      0.09         0.19         0.01       9930      320
cciss/c0d0p10   0.09         0.19         0.00       9930          0
cciss/c0d0p11   0.09         0.19         0.00       9930          0
cciss/c0d0p12   0.38         0.39         0.00      20292         16
cciss/c0d0p13   6.47      13.01      47.98   679874    2506744
cciss/c0d0p14   0.19         0.38         0.04      19846       2304
cciss/c0d0p15   0.27         3.17         0.34   165614      17984

sar -d 的结果

Average:       dev1-0      0.00      0.00      0.00
Average:       dev1-1      0.00      0.00      0.00
Average:       dev1-2      0.00      0.00      0.00
Average:       dev1-3      0.00      0.00      0.00
Average:       dev1-4      0.00      0.00      0.00
Average:       dev1-5      0.00      0.00      0.00
Average:       dev1-6      0.00      0.00      0.00
Average:       dev1-7      0.00      0.00      0.00
Average:       dev1-8      0.00      0.00      0.00
Average:       dev1-9      0.00      0.00      0.00
Average:      dev1-10      0.00      0.00      0.00
Average:      dev1-11      0.00      0.00      0.00
Average:      dev1-12      0.00      0.00      0.00
Average:      dev1-13      0.00      0.00      0.00
Average:      dev1-14      0.00      0.00      0.00
Average:      dev1-15      0.00      0.00      0.00
Average:   dev104-0    137.03   1254.59   1360.51
Average:       dev9-0      0.00      0.00      0.00

[ 本帖最后由 wangdonsy 于 2008-3-26 13:24 编辑 ]

chenfeng825 发表于 2008-03-26 14:04

分两步怀疑,首先是raid的硬件设定,这个首先检查一下
从dd来看,磁盘本身并没有问题。cciss/c0d0p1这个设备名怎么看起来有些不一样?

ASE写入的方式和dd这些还是有差别的,他默认会使用dsync(o_sync)
filesystem device?ext3? rhel 4 + 12.5.4 尝试用1648的traceflag开启directio(bypass fs buffer)看看效果怎么样。
,另外也可以尝试关闭device的dsync测试,如果性能有提高,恐怕就是o_sync对数据库写入的影响了。
另外iostat采样一次对于结果也没有帮助,例如这里看到你的iowait很高。。。,可以在bcp in的时候做更多的采样来判断
页: [1]
查看完整版本: BCP慢的问题