为什么要分表,分库:

当我们的数据表数据量,訪问量非常大。或者是使用频繁的时候,一个数据表已经不能承受如此大的数据訪问和存储,所以,为了减轻数据库的负担,加快数据的存储,就须要将一张表分成多张,及将一类数据存入不同的几张表,当分表已经不能满足需求是,我们还能够分库,及用几个数据库存储。

分表会随着需求和功能的不同有不同的实现方法。以下是我做项目中的一个样例:

需求:product。product_price两张表是一对多的关系,及产品和产品每日的价格,一个产品相应几种价格,如今因为产品表数据量非常大。每天多有上百万条数据。就以天为单位对表进行分表。以月为单位对数据库进行分库,表的命名为‘product_price2014-07-20’表格式:前面是原数据库表名,后面是日期(年-月-日).

创建数据库和表的代码例如以下:

function get_product_price_table(){
$db_info=array(); //这个月
$newmot_time=date("Y-m");
//今天日期
$newday_time=date("Y-m-d");
//本月数据库。今天的表
$db_name = 'acbooking'.$newmot_time;
$table_name = "product_price".$newday_time; //昨天的日期
$yesday_time = date("Y-m-d",strtotime("-1 day")); //取出昨天的数据,获取 product_price的最后id,作为新表id的起始值
$last_one_product_price = get_info('product_price_table_id',array('time'=>$yesday_time));
if($last_one_product_price['table_id_end']>0){
$table_id = $last_one_product_price['table_id_end']+1;
}else{
$table_id = 1;
} //创建数据库
	$Db_string_line = C('DB_TYPE').'://'.C('DB_USER').':'.C('DB_PWD').'@'.C('DB_HOST').'/'.$new_db_database;
$DB_P=C('DB_PREFIX');
$Model=M($table,$DB_P,$Db_string_line);
$db_name=$Model->execute($sql);//通过sql语句配置创建新数据库新标,此处省略了sql语句
 
    //创建数据表
	$Db_string_line = C('DB_TYPE').'://'.C('DB_USER').':'.C('DB_PWD').'@'.C('DB_HOST').'/'.$new_db_database;
$DB_P=C('DB_PREFIX');
$Model=M($table,$DB_P,$Db_string_line);
$table_name=$Model->execute($sql);

    //返回新 数据库,新的表
$db_info['database']=$db_name;
$db_info['table']=$table_name;
return $db_info;
}

创建出分表后,就可以存储当天的全部数据。每天换一张表,运行效率非常高。。。。

最新文章

  1. mac下查看.mobileprovision文件及钥匙串中证书.cer文件
  2. 手动配置三台虚拟机pacemaker+corosync并添加httpd服务
  3. 判断checkbox是否选中
  4. win7下用python3.3抓取网上图片并下载到本地
  5. linux开机启动服务和chkconfig使用方法(自定义服务路径启动)
  6. hdu 1427 速算24点
  7. jsp防盗链代码
  8. sphinx 占用大量内存
  9. boostrap兼容ie及其案例
  10. 恢复SQLSERVER被误删除的数据(转)
  11. 团队作业八——第二次团队冲刺(Beta版本)第3天
  12. Redis出现多线程调用时抛出 [B cannot be cast to java.lang.Long] 异常
  13. 13常用sql语句
  14. C# - 如何让类型可以比较
  15. Vue通过路由 query传递参数
  16. Multi-Model多模数据库引擎设计与实现
  17. [Hibernate] 分页查询
  18. 对ajax中数据的得到以及绑定的认识
  19. Java异常处理的方法
  20. java小知识点简单回顾

热门文章

  1. AspNetCore容器化(Docker)部署(二) —— 多容器通信
  2. 设计模式:命令模式(Command Pattern)
  3. java 垃圾回收之标记算法
  4. Openjudge-4115-佐助和鸣人
  5. mysql语句中判断是否包含某字符串的方法
  6. java指令详解
  7. NTP服务和DNS服务
  8. 查看mysql二进制日志报错问题
  9. LeetCode(12)Integer to Roman
  10. UVA674-Coin Change,用动归思想来递推!