6月 25

如果我做双色球报表系统性能会如何

  双色球有人中了5.7亿,各种怀疑的声音也此起彼伏。有人说停售到开奖直播中间有一段时间是在算出现概率。我对是否在算并不感兴趣,我倒是想知道,如果在算要用什么样子的服务器

,会有多大压力。实际值2012072期销售349310588元,共174655294注。我用一台很老的dell 2850 来试验,双核3.2主频的单cpu,4G内存,ide接口硬盘。 Centos 5.4 64位系统,mysql5。

  写个脚本产生随机数来模拟彩票投注。根据投注号产生MD5码,取MD5的前两位作为分表依据。
  需要速度,所以开始用C来作,因学艺不精,C写的东西速度很慢,并且也没有找到原因,我将c的代码放在最后,如有朋友能帮忙解决烦请告知。最后还是用python来做。通过初步试验,

产生100万数据并入库需要3分多钟,如果产生1.8亿需要12个多小时。最后决定只产生一张表的数据,一张表数据100万。取MD5前两位,如果每张表都是100万,总共能产生2.56亿注,这个值

可以满足测试要求。

  产生表的SQL如下:

  产生投注的脚本如下,因为开始考虑到要放到256张表里,所以就没有做成批量入库,而是做成生成SQL语句,5000条提交一次。:

  运行完毕使用sql分组统计,查看分组和排序结果SQL如下,运行一次用时6.693秒。

  结论:因为要保证速度和稳定,所以购买系统应该是各省有各省的一套系统,然后准实时向中心汇数据,所以汇总需要的时间基本可以忽略。统计是按照分表的方式进行计算,然后在合

并结果,从计算效率来看,如果使用Dell R420高配的服务器,即使只有一台,系统也可以在3-5分钟产生出所有的分析报表(这个是估算,因为不知道需要多少统计表,也不知道需要统计的

逻辑)。如果是用oracle数据库应该会更安全快速。

  我写失败的C代码:

  编译命令:
gcc rand.c -o rand -Wall

参考资料:

http://baike.baidu.com/view/19016.htm

9月 17

ORACLE 重建过度占用的空间

[整理人:张子萌]
数据库的undotbs或临时空间占用过太(自动扩展造成),磁盘空间有点紧,所以先考虑重建一下环节压力。

创建新的UNDO表空间

1)创建新的undo空间
SQL> CREATE UNDO
TABLESPACE UNDOTBS2
DATAFILE ‘/u02/UNDOTBS2.dbf’ SIZE 2048M
AUTOEXTEND
ON NEXT 10M MAXSIZE UNLIMITED ;
2)切换使用新的undo空间
SQL> ALTER SYSTEM SET UNDO_TABLESPACE = UNDOTBS2;
3)删除原始的undo空间
SQL> DROP TABLESPACE UNDOTBS1 INCLUDING CONTENTS AND DATAFILES;

重建临时表空间

1)创建新的临时表空间
SQL> CREATE temporary
TABLESPACE TEMP2
TEMPFILE ‘/u02/temp2.DBF’ SIZE 512M
REUSE AUTOEXTEND
ON NEXT 1M MAXSIZE UNLIMITED;
2) 改变缺省临时表空间
SQL> ALTER DATABASE DEFAULT temporary TABLESPACE TEMP2;
3)删除原来临时表空间
SQL> DROP TABLESPACE TEMP1 INCLUDING CONTENTS AND DATAFILES;