PHPWPS

 找回密码
 立即加入

QQ登录

只需一步,快速开始

搜索
热搜: php discuz
查看: 8127|回复: 0

[其它] 数据库过千万过亿的处理办法

[复制链接]

280

主题

420

帖子

1970

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1970
发表于 2014-4-23 13:03:32 | 显示全部楼层 |阅读模式
这段时间有个程序中的数据已经有900多万了,因为页面需要调用一百次左右的随机数据,貌似数据库有些扛不住,把数据库down到本机,光导入到本机的数据库就花了几个小时,并且修改字段类型啥的直接等几十分钟无响应了。太耗时间了。如果是千万级别、亿万级别甚至更高的数据库,不卡死?没法操作?
在phpmyadmin中,列出除第一页之外的数据,随着页数越多,显示需要的时间越来越多,多到没法忍受。
后来采用拆表、也就是分表的办法,把900多万数据拆分成30多个表,先按照数据中的20个分类拆分成20个表,这样方便知道分类后,在指定范围的表中找到需要的数据。里面有2个表的数据还是在200万以上,然后按照每个表最多允许50万条数据继续进行拆分,差不多30个表了。
然后在额外在分类表中额外增加一个字段,记录该分类下有多少条记录,程序里面做些修改,判断分类下数据量是50万的多少倍,计算出来后去除小数部分,用floor函数搞定,总之限定一个表最多允许50万条数据,当数据量超过的时候建一个新表来存储下一个50万的数据。
我给分表是这样命名的,比如goods表有900多万进行分表。命名如下:
goods1_0   这个表示分类1下面的第一个表
goods2_3  这个表示分类2下面的第四个表(因为我是从0开始计算的,所以3实际是第四个表)
……

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即加入

本版积分规则

QQ|小黑屋|手机版|Archiver|phpwps Inc. ( 鄂ICP备14011625号-1 )

GMT+8, 2025-5-4 13:01 , Processed in 0.055061 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表