mysql,sqlserver数据库单表数据过大的处理方式

栏目: 数据库 · SQL Server · 发布时间: 6年前

经常混迹于技术社区,频繁看到这个题目,今天干脆在自己博客重复一遍解决办法: **针对mysql,sqlserver等关系型数据库单表数据过大的处理方式** **如果不是**[**阿里云**](https://2bit.cn/aliyunWeb?opengps284)**的**[**分布式数据库 DRDS**](https://2bit.cn/drds?opengps284)** 那种多机器集群方案的话: 先考虑表分区 ;然后考虑分表 ;然后考虑分库。** 这个题目是我所经历过的,我做的是GPS应用,早期版本就是选用的关系型数据库Sql Server。当时我选取的方案就是第一种:表分区。 表分区的优势是,如果表结构合理,可以不涉及到程序修改。也就是说,对程序来讲依然是单表读写的效果! 所有轨迹数据存入到一个巨大的表里。有多大呢? - 最大存储量超过10亿行。具体数值应该是12亿多点,由于系统设计为只存储30天轨迹,所以线上期间最大存储只到这个数,再后来采用云架构,上云替换成非关系性数据库,获得了更高的写入性能和存储压缩能力。   - 每日写入量就超过1500万行。上下班交通高峰时候每秒写入量平均超过500行。也就是500iops,距离系统设计的压测指标3000还有一大截 **这张大型单表设计要点:**(一个聚集索引用于写入,一个联合索引用于查询,没有主键,使用表分区) **明确主键用途:** 真的需要查询单行数据时候才需要主键! 我采用无主键设计,用于避免写入时候浪费维护插入数据的性能。最早使用聚集的类似自增的id主键,压测写入超过5亿行的时候,写入性能缩减一半 **准确适用聚集:** 写入的数据在硬盘物理顺序上是追加,而不是插入! 我把时间戳字段设置为聚集索引,用于聚集写入目的设计。保证硬盘上的物理写入顺序,不浪费性能用于插入数据 **职责足够单一:**  用于精准索引! 使用时间+设备联合索引,保证这张表只有一个查询用途。保证系统只有一种查询目的:按照设备号,查询一个时间段的数据。 **精确的表分区:** 要求查询时候限定最大量或者最大取值范围! 按天进行表分区,实现大数据量下的高效查询。这里是本文重点,按照聚集索引进行,可以让目标数据局限在更小的范围进行,虽然单表数据上亿,但是查询基本上只在某一天的的几千万里进行索引查询 每张表会有各自的特点,不可生搬硬套,总结下我这张表的特点: 只增,不删,不改! 关于不删除中:每天使用作业删除超过30天的那个分区数据除外,因为要清空旧的表分区,腾出新的表分区! 只有一个业务查询:只按照设备编码查询某个时间段 只有一个运维删除:删除旧的分区数据 这张表,是我技术生涯中进步的一个大阶梯,让我我体会到了系统架构的意义。 虽然我的这张举行表看似只有4个关键点,但是这四个非常精准的关键点设计,耗费了我一个月之久!正是这么足够精准的表结构设计,才撑起了后来压测并发量超过3000的并发写入量!压测的指标跟数据库所在的硬盘有直接关系,当时选取的硬盘是4块10000转的SAS盘做了Raid10的环境 关于后来为什么没有更高的实际应用数值,是因为系统后来改版为云架构,使用了[阿里云](https://2bit.cn/aliyunWeb?opengps284),更改为写入性能更高的[非关系型数据库MongoDB](https://2bit.cn/mongoDB?opengps284)存储轨迹数据。所以虽然距离压测指标还差很远,但是也没有实际跑到这个数据!单机应用再怎么改造,每次升级都是一件麻烦事,所以应当尽可能将瓶颈点提高,甚至消除,云架构的意义就在于弹性扩展,虽然我在数据库方面还没有这方面的成功案例可分享,但是这种架构的意义很明白:将来面对更大的压力,只需要增加服务器数量!     最后提一句, 很多人觉得SSD就足够高的性能了,但是对于云服务器,ssd的性能才跟传统物理机的iops相持平,这是由于虚拟化层面的损失导致的! 原文地址: [https://www.opengps.cn/Blog/View.aspx?id=284](https://www.opengps.cn/Blog/View.aspx?id=284) 文章的更新编辑依此链接为准。欢迎关注源站原创文章!


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Practical Algorithms for Programmers

Practical Algorithms for Programmers

Andrew Binstock、John Rex / Addison-Wesley Professional / 1995-06-29 / USD 39.99

Most algorithm books today are either academic textbooks or rehashes of the same tired set of algorithms. Practical Algorithms for Programmers is the first book to give complete code implementations o......一起来看看 《Practical Algorithms for Programmers》 这本书的介绍吧!

在线进制转换器
在线进制转换器

各进制数互转换器

随机密码生成器
随机密码生成器

多种字符组合密码

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器