• 专注于网站建设,网络推广,关键词优化,SEO优化,专业的网站建设开发团队!

Discuz百万级数据的压力测试实现(创建海量数据库)

2015-06-13 16:36:04   来源:叶景网络

由于开发的需求,对discuz创建海量数据库来进行压力测试以下是对discuz百万级数据的压入,以压力测试做准备,首先分析discuz表结构:
mysql> desc bbs_forum_post;
+-------------+-----------------------+------+-----+---------+----------------+
| Field       | Type                  | Null | Key | Default | Extra          |
+-------------+-----------------------+------+-----+---------+----------------+
| pid         | int(10) unsigned      | NO   | UNI |         |                |

| fid         | mediumint(8) unsigned | NO   | MUL | 0       |                |

| tid         | mediumint(8) unsigned | NO   | PRI | 0       |                |

| first       | tinyint(1)            | NO   |     | 0       |                |

| author      | varchar(15)           | NO   |     |         |                |

| authorid    | mediumint(8) unsigned | NO   | MUL | 0       |                |

| subject     | varchar(80)           | NO   |     |         |                |

| dateline    | int(10) unsigned      | NO   | MUL | 0       |                |

| message     | mediumtext            | NO   |     |         |                |

| useip       | varchar(15)           | NO   |     |         |                |

| invisible   | tinyint(1)            | NO   | MUL | 0       |                |

| anonymous   | tinyint(1)            | NO   |     | 0       |                |

| usesig      | tinyint(1)            | NO   |     | 0       |                |

| htmlon      | tinyint(1)            | NO   |     | 0       |                |

| bbcodeoff   | tinyint(1)            | NO   |     | 0       |                |

| smileyoff   | tinyint(1)            | NO   |     | 0       |                |

| parseurloff | tinyint(1)            | NO   |     | 0       |                |

| attachment  | tinyint(1)            | NO   |     | 0       |                |

| rate        | smallint(6)           | NO   |     | 0       |                |

| ratetimes   | tinyint(3) unsigned   | NO   |     | 0       |                |

| status      | int(10)               | NO   |     | 0       |                |

| tags        | varchar(255)          | NO   |     | 0       |                |

| comment     | tinyint(1)            | NO   |     | 0       |                |
 

| replycredit | int(10)               | NO   |     | 0       |                |

 

| position    | int(8) unsigned       | NO   | PRI | NULL    | auto_increment |
+-------------+-----------------------+------+-----+---------+----------------+
#--------------------------------------
show create table bbs_forum_post\G;
*************************** 1. row ***************************
       Table: bbs_forum_post
Create Table: CREATE TABLE `bbs_forum_post` (
  `pid` int(10) unsigned NOT NULL,
  `fid` mediumint(8) unsigned NOT NULL default '0',
  `tid` mediumint(8) unsigned NOT NULL default '0',
  `first` tinyint(1) NOT NULL default '0',
  `author` varchar(15) NOT NULL default '',
  `authorid` mediumint(8) unsigned NOT NULL default '0',
  `subject` varchar(80) NOT NULL default '',
  `dateline` int(10) unsigned NOT NULL default '0',
  `message` mediumtext NOT NULL,
  `useip` varchar(15) NOT NULL default '',
  `invisible` tinyint(1) NOT NULL default '0',
  `anonymous` tinyint(1) NOT NULL default '0',
  `usesig` tinyint(1) NOT NULL default '0',
  `htmlon` tinyint(1) NOT NULL default '0',
  `bbcodeoff` tinyint(1) NOT NULL default '0',
  `smileyoff` tinyint(1) NOT NULL default '0',
  `parseurloff` tinyint(1) NOT NULL default '0',
  `attachment` tinyint(1) NOT NULL default '0',
  `rate` smallint(6) NOT NULL default '0',
  `ratetimes` tinyint(3) unsigned NOT NULL default '0',
  `status` int(10) NOT NULL default '0',
  `tags` varchar(255) NOT NULL default '0',
  `comment` tinyint(1) NOT NULL default '0',
  `replycredit` int(10) NOT NULL default '0',
  `position` int(8) unsigned NOT NULL auto_increment,
  PRIMARY KEY  (`tid`,`position`),
  UNIQUE KEY `pid` (`pid`),
  KEY `fid` (`fid`),
  KEY `authorid` (`authorid`,`invisible`),
  KEY `dateline` (`dateline`),
  KEY `invisible` (`invisible`),
  KEY `displayorder` (`tid`,`invisible`,`dateline`),
  KEY `first` (`tid`,`first`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8
1 row in set (0.00 sec)
#--------------------------------------
#用于测试-全局
create view tmp as select pid,fid,tid,first,author,authorid,subject,dateline,message,useip,invisible,anonymous,usesig,htmlon,bbcodeoff,smileyoff,parseurloff,attachment,rate,ratetimes,status,tags,comment,replycredit,position from test.test_forum_post;
#--------------------------------------
#创建视图tmp
create view tmp as select pid,author,subject,useip,message,position from test.test_forum_post
#-------------------------------------
#删除视图tmp
drop view tmp;
#--------------------------------------
#测试查询视图tmp中的数据
select * from tmp limit 2;
#--------------------------------------
#用于测试
#insert into bbs.bbs_forum_post(author,subject,message) select * from tmp;
#以上均为用于分析与测试内容
#--------------------------------------
#               实现过程
#--------------------------------------
#定义字符集 
set names gbk;
#定义一个新的命令结束符
delimiter $$
#--------------------------------------
#创建一个产生随机数字的函数
create function rand_num( )
returns int(5)
begin 
 declare i int default 0;
 set i = floor(10+rand()*500);
return i;
  end $$
#--------------------------------------
#恢复结束符
delimiter ;
#--------------------------------------
#查看函数产生随机数字
select rand_num();
#--------------------------------------
#删除自定的函数rand_num
drop function rand_num;
#--------------------------------------
#定义一个新的命令结束符
delimiter $$
#--------------------------------------
#创建一个帖子标题函数
create function select_subject( )
returns text(250)
begin 
 declare m text default 0;
 set m = '广西党委组织部和广西人寿为大学生村官提供综合保险保障';
return m;
  end $$
#--------------------------------------
#查看函数标题
select select_subject();
#--------------------------------------
#删除自定的函数select_subject()
drop function select_subject;
#--------------------------------------
#创建一个帖子内容函数
create function select_message( )
returns text(5000)
begin 
 declare m text default 0;
 set m = '中国IT 领域的发展速度之快令世界瞩目,但是中国的计算机教育却没有能够跟上。因 此,在各大高校扩招的同时,IT 培训机构同样发展的很快。 然而,学习IT 的学生却仍然面临着其他专业不一样的困惑。因为IT 技术发展很快,而 课程体系并不能很快跟上,因此学生在学校并不了解企业需要什么,自己需要学习什么.';
return m;
  end $$
#-------------------------------------
#查看函数标题
select select_message();
#--------------------------------------
#删除自定的函数select_message()
drop function select_message;
#--------------------------------------
create procedure insert_bbs_forum_post(in start int(10),in max_num int(10))
begin
declare i int default 0; 
 set autocommit = 0;  
 repeat
 set i = i + 1;
#insert into pre_forum_thread values ((start+i) ,rand_string(10),'SALESMAN',0001,curdate(),2000,400,rand_num());
insert into bbs_forum_post values ((start+i),37,(start+i),1,'admin',1,concat(select_subject(),rand_num()),1356598637,select_message(),'127.0.0.1',0,0,1,0,-1,-1,0,0,0,0,0,'',0,0,1);
until i = max_num
 end repeat;
   commit;
 end $$
#--------------------------------------
#恢复结束符
delimiter ;
#--------------------------------------
#调用刚刚写好的存储过程函数, 1000000条记录,从100001号开始
call insert_bbs_forum_post(10001,1000000);
#--------------------------------------
#删除自定的存储过程函数insert_bbs_forum_post
drop procedure insert_bbs_forum_post;
#--------------------------------------
#删除bbs_forum_post表中的所有数据
delete from bbs_forum_post where pid>0
#--------------------------------------

本文由叶景网络原创,转载请标明出处!

叶景网络,网络推广,网站建设
特别推荐RECOMMEND
搜索引擎网站关键词seo优化的意义
视频推广怎么做
网站seo优化怎么做关键词排上首页?
SEO介绍什么叫搜索引擎网站关键词优化
seo优化怎样做提升关键词排名
热点图文Hot
discuz插件开发的入门篇 discuz插件开发的入
彻底解决关于dedecms留言板的安装问题 彻底解决关于dedecm
DiscuzX2.5登录无法同步登录到PHPCMS v9解决办法 DiscuzX2.5登录无法
discuz X2.5安装手动选择ucenter时出错问题解决 discuz X2.5安装手
关注排行RANKING
1

discuz插件开发的入门篇

discuz插件开发的入门篇 在config config_global php 文件里设置$_config[ plugindeveloper ] = ...

2

彻底解决关于dedecms留言板的安装问题

彻底解决关于dedecms留言板的安装问题 先前使用dedecms5 5做的网站在服务器上运行两年了,某天突然想给网站加上个留言板模块...

3

DiscuzX2.5登录无法同步登录到PHPCM...

DiscuzX2.5登录无法同步登录到PHPCMS v9解决办法 叶景网络(www cngxit com),致力于互联网品牌建设与网络营销,专业领...

4

discuz X2.5安装手动选择ucenter时...

discuz X2.5安装手动选择ucenter时出错问题解决 discuz X2 5安装时想自定义选择ucenter时出错,因为discuz X2 5中也有一个uc_server...

5

Discuz百万级数据的压力测试实现(...

Discuz百万级数据的压力测试实现(创建海量数据库) 由于开发的需求,对discuz创建海量数据库来进行压力测试,以下是对discuz百万级数据的压...

6

discuzX2.5安装不成功,到了正在安装...

discuzX2.5安装不成功,到了正在安装附加数据就不动了 叶景网络(www cngxit com),致力于互联网品牌建设与网络营销,专业领域包括网...

7

Discuz!中分表的实现方法

Discuz!中分表的实现方法 论坛系统中的帖子表,是访问量大很大的表,为了保证数据的快速提取返回给用户,...

8

什么情况下选用hdwiki(for discuz)?

什么情况下选用hdwiki(for discuz)? 如果您已经有了一个dz论坛,并且还想要一个自己专业的知识库,建个百科频道。建...

9

让hdwiki使用discuz的登录和注册

让hdwiki使用discuz的登录和注册 hdwiki是国内开源wki结构简单,安装使用还是很方便的。discuz是使用最多的开源BBS。