Chinaunix首页 | 论坛 | 博客
  • 博客访问: 604201
  • 博文数量: 43
  • 博客积分: 4250
  • 博客等级: 上校
  • 技术积分: 486
  • 用 户 组: 普通用户
  • 注册时间: 2006-05-04 04:09
文章分类
文章存档

2009年(2)

2008年(5)

2007年(29)

2006年(7)

我的朋友

分类: Mysql/postgreSQL

2007-04-18 14:02:27

今天做了一个mysql cluster中用disk data storage的测试,通过对比,确实能够大幅减少内存的使用.
百万条小记录.测试过程如下.
1.未使用disk data storage前.测试脚本
文件nodiskdata.test
--disable_warnings
drop table if exists t1,t2,t3;
--enable_warnings
create table t1(id1 int not null auto_increment primary key, t char(12));
create table t2(id2 int not null, t char(12));
create table t3(id3 int not null, t char(12), index(id3));
disable_query_log;
let $1 = 100;
while ($1)
 {
  let $2 =100 ;
  eval insert into t1(t) values ('$1');
  while ($2)
   {
     eval insert into t2(id2,t) values ($1,'$2');
     let $3 = 100;
     while ($3)
     {
       eval insert into t3(id3,t) values ($1,'$2');
       dec $3;
     }
     dec $2;
   }
  dec $1;
 }
enable_query_log;
 
运行
#mysqltest < nodiskdata.test
#ndb_mgm -e "all dump 1000"
#tail /var/lib/mysql-cluster/ndb_1_cluster.log
看到
Data usage increased to 83%(2133 32K pages of total 2560)
Index usage is 61%(1894 8K pages of total 3104)
 
2.用了disk data storage后.测试脚本
文件diskdata.test
--disable_warnings
drop table if exists t1,t2,t3;
--enable_warnings
create logfile group lg_1
        add undofile 'undo_1.dat'
        initial_size 32M
        undo_buffer_size 8M;
create tablespace ts_1
        add datafile 'data_1.dat'
        use logfile group lg_1
        initial_size 64M;
create table t1(id1 int not null auto_increment primary key, t char(12)) tablespace ts_1 storage disk;
create table t2(id2 int not null, t char(12)) tablespace ts_1 storage disk;
create table t3(id3 int not null, t char(12), index(id3)) tablespace ts_1 storage disk;
disable_query_log;
let $1 = 100;
while ($1)
 {
  let $2 =100 ;
  eval insert into t1(t) values ('$1');
  while ($2)
   {
     eval insert into t2(id2,t) values ($1,'$2');
     let $3 = 100;
     while ($3)
     {
       eval insert into t3(id3,t) values ($1,'$2');
       dec $3;
     }
     dec $2;
   }
  dec $1;
 }
enable_query_log;
 
运行
#mysqltest < diskdata.test
#ndb_mgm -e "all dump 1000"
#tail /var/lib/mysql-cluster/ndb_1_cluster.log
看到
Data usage is 74%(1896 32K pages of total 2560)
Index usage is 61%(1894 8K pages of total 3104)
 
3.从我所建的表中,索引列占用的内存很多,所以data usage下降不明显,但是仔细计算,可以发现非索引列确实达到了移出内存,使用磁盘的目的.
 
4.最后,logfile,tablespace的大小要合理计算,根据具体应用设置大小.
 
 
阅读(2511) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~