数据库数据量过⼤处理——分表
记录⼀下,个⼈理解。。。
数据表中数据太多的话,刚开始可以⽤索引之类的来优化。随着业务多。。难免性能就下来了。这时候就需要去思考,怎么处理,就想到了把数据源分开,把⼀张表分开成⼏张表。。
tabletime⾸先如何判断⽤不⽤判断,以及分表后的后端,综合考虑之后,直接开⼲。。
--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对象。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论