预览加载中,请您耐心等待几秒...
1/2
2/2

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

一直迷信MYSQL很强大,但昨晚才知道差距太大了。 数据才到30万,就已经慢得不行了,特别是在随机抽取数据的时候,甚至能卡到10秒左右。然后在网上查了一下,原来MYSQL数据库就这么大能耐了。几十万条数据的随机抽取,本来就是很慢的。 怎么办?分表?如何分表?如何自动分表?在一般的CMS里,应该都没有分表的,或者是低估了站长们的能力吧!(其实主要也就是采集的能力)无忧CMS有分表,但是是手工分表,我觉得应该有一种自动无限分表的方案,这样就能解决百万,千万级的数据库要求了。 但是,这里必须声明的是,这种数据库稍复杂,适合简单的网站模式,不适合多表查询或全站搜索的格式。 首先要说明的是,这里的分表,是按数据条数来计算的,而不是按字节数,而且,即使删除的数据,也会计算在内。 先说写入数据。先设置一个ID数,也是写入数据库的,然后在写入数据的时候,调用此ID,每存一条数据,此ID加1,当数据大于1万条时,用此ID数除以1万再加1,等于2,然后自动建立第二张表,并将大于1万条的数据存入第二张表,后面的表类推。比如,表名是tab,第二张表名就是tab2,然后是tab3,tab4这样,自动排序是没问题的。MYSQL的表是可以建立无限的,只要数据库的本身大小允许。 读取数据的时候,直接按ID排序读取,同理倒置即可。 我用的程序还需要另一个功能(本文转自HYPERLINK"http://www.shangyurencai.com/"上虞人才网),那就是随机抽取几十条信息。这里要从N张表里提取。其实只要多几个随机数就能实现。首先随机从几个表里提取。如果当前为5个表,那就随机1~5,这个还可以更复杂一些,因为如果表多了,从1开始就不适合了,可以这样计算:首先设置的ID数/1万=表数表数/2再随机从表数/2到总表数,这样就能自动适合大数据量的表了。这是确定从多少张表里读取。 然后是数据提取的问题。首先确定要提取多少条信息。然后用需要的总数据量,除以上段得出的表数。得出了每张表抽取的数据量,余数侧再随机从另一张表得到。或者换个思路,用 应该抽取的总数/上段得到的表数+(注:这里是随机+或-)[(应该抽取的总数/上段得到的表数)] 这样做,主要是进一步把数据随机抽取,达到想要的效果。 这种复杂的计算,只适用于简单的数据处理。 扩展阅读: 1.HYPERLINK"http://www.tengzhourcw.com/"滕州人才网 www.tengzhourcw.com 2.HYPERLINK"http://www.shangyurencai.com/"上虞人才网 www.shangyurencai.com