zoukankan      html  css  js  c++  java
  • 数据库数据量过大处理——分表

    记录一下,个人理解。。。

    数据表中数据太多的话,刚开始可以用索引之类的来优化。随着业务多。。难免性能就下来了。 这时候就需要去思考,怎么处理,就想到了把数据源分开,把一张表分开成几张表。。

    首先如何判断用不用判断,以及分表后的后端,综合考虑之后,直接开干。。

    --exec sp_spaceused '表名'  --查询表所占空间

     先分析下,一张表活动数据如果上百万级别的话,就可以考虑分表了。。。

    分表可以写一个简单的服务,或者开一个简单的线程。。按照表名+月份  或者表名+年份来安排。。

    以后查询的时候,根据时间去查询所对应的表。。。

    月份表获取表名例子:

    private static List<string> GetTableIndex(DateTime? fromTime, DateTime? toTime, string tableName)
            {
                //获取索引值
                List<string> listTableName = new List<string>();
                if (!fromTime.HasValue)
                {
                    fromTime = DateTime.Parse(DateTime.Now.ToShortDateString());
                }
                if (!toTime.HasValue)
                {
                    toTime = fromTime;
                }
                DateTime dtDay1 = new DateTime(fromTime.Value.Year, fromTime.Value.Month, 1);
                DateTime dtDay = toTime.Value;
    
                while (dtDay >= dtDay1)
                {
                    listTableName.Add(tableName + "_" + dtDay.ToString("yyyyMM"));
                    dtDay = dtDay.AddMonths(-1);
                }
    
                return listTableName;
            }

    对于ORM框架不太友好 需要专门去维护一下   或者写SQL去查在转成ORM对象。

  • 相关阅读:
    五月八日冲刺
    五月七号冲刺
    五月六日站立会议
    prufer序列学习笔记
    批量数据导入优化
    索引失效
    慢查询定位与分析
    redis主从同步
    redis RBD机制
    redis AOF机制
  • 原文地址:https://www.cnblogs.com/cr-cool/p/12976994.html
Copyright © 2011-2022 走看看