MySQL单表数据量过大的处理方式经验
针对mysql,sqlserver等关系型数据库单表数据过大的处理方式
如果不是阿里云的分布式数据库 DRDS 那种多机器集群方案的话: 先考虑表分区 ;然后考虑分表 ;然后考虑分库。
这个题目是我所经历过的,我的GPS汽车定位系统,早期就是选用的Sql Server数据库。当时我选取的方案就是第一种:表分区。 表分区的优势是,如果表结构合理,可以不涉及到程序修改。也就是说,对程序来讲依然是单表读写的效果!
所有轨迹数据存入到一个巨大的表里。有多大呢?
最大存储量超过10亿行。具体数值应该是12亿多点,由于系统设计为只存储30天轨迹,所以线上期间最大存储只到这个数,再后来采用云架构,上云替换成非关系性数据库,获得了更高的写入性能和存储压缩能力。
每日写入量就超过1500万行。上下班交通高峰时候每秒写入量平均超过500行。也就是500iops,距离系统设计的压测指标3000还有一大截
这张大型单表设计要点:(一个聚集索引用于写入,一个联合索引用于查询,没有主键,使用表分区)
明确主键用途:
真的需要查询单行数据时候才需要主键!
我采用无主键设计,用于避免写入时候浪费维护插入数据的性能。最早使用聚集的类似自增的id主键,压测写入超过5亿行的时候,写入性能缩减一半
准确适用聚集:
写入的数据在硬盘物理顺序上是追加,而不是插入!
我把时间戳字段设置为聚集索引,用于聚集写入目的设计。保证硬盘上的物理写入顺序,不浪费性能用于插入数据
职责足够单一:
用于精准索引!
使用时间+设备联合索引,保证这张表只有一个查询用途。保证系统只有一种查询目的:按照设备号,查询一个时间段的数据。
精确的表分区:
要求查询时候限定最大量或者最大取值范围!
按天进行表分区,实现大数据量下的高效查询。这里是本文重点,按照聚集索引进行,可以让目标数据局限在更小的范围进行,虽然单表数据上亿,但是查询基本上只在某一天的的几千万里进行索引查询
每张表会有各自的特点,不可生搬硬套,总结下我这张表的特点:
只增,不删,不改!
关于不删除中:每天使用作业删除超过30天的那个分区数据除外,因为要清空旧的表分区,腾出新的表分区!
只有一个业务查询:只按照设备编码查询某个时间段
只有一个运维删除:删除旧的分区数据
参考文章: https://www.opengps.cn/Blog/View.aspx?id=284
MySQL单表数据量过大的处理方式经验相关推荐
- MySQL单表数据量过千万,采坑优化记录,完美解决方案
MySQL单表数据量过千万,采坑优化记录,完美解决方案 参考文章: (1)MySQL单表数据量过千万,采坑优化记录,完美解决方案 (2)https://www.cnblogs.com/ExMan/p/ ...
- 单表数据量过大处理策略
今天和一个朋友在讨论怎么样应对单表数据量过大,比如一些交易数据,每天都有10W的交易量.没有多久该表的查询,插入速度将变慢,最终将不可用. 对于关系数据库来说,应对单表数据量过大的策略大体上有两种. ...
- MySQL单表数据不要超过500万行:是经验数值,还是黄金铁律?
今天,探讨一个有趣的话题:MySQL 单表数据达到多少时才需要考虑分库分表?有人说 2000 万行,也有人说 500 万行.那么,你觉得这个数值多少才合适呢? 曾经在中国互联网技术圈广为流传着这么一个 ...
- MySQL单表数据量超1亿,根据 索引列 批量删除数据
我的场景:MySQL8有个表数据量超1亿,然后我要根据某个例(一对多)删除数据, 我直接用:delete from 表 where 字段 in (select 其他表) 条件用in的方式执行报 ...
- “数据中台、读写分离、表分区”解决MySQL 单表数据量、并放量双高的效率瓶颈
需求情景:现有一数据库表,用于记录每一台设备的各种指标项数据,每台设备指标项约150个左右,共有10台设备(后期还会增加),每台设备每2秒写入1次数据,即:数据库单表每秒写入数据量=10台设备*150 ...
- mysql并发 node_nodejs写入mysql单次数据量过大的解决方法_沃航科技
今天使用nodejs开发mysql程序时,发现了如下bug提示:{ Error: write EPIPE at WriteWrap.afterWrite [as oncomplete] (net.js ...
- 面试官问单表数据量大一定要分库分表吗?我们用六个字和十张图回答
1 文章概述 在业务发展初期单表完全可以满足业务需求,在阿里巴巴开发手册也建议:单表行数超过500万行或者单表容量超过2GB才推荐进行分库分表,如果预计三年后数据量根本达不到这个级别,请不要在创建表时 ...
- mysql查看比较大的数据表_mysql 如何查看哪些表数据量比较大
数据库中有几十上百张表,那么哪些表的数据量比较大呢,总不能一个表一个表的去查询吧,在mysql中也有类似于oracle的数据字典表,只不过mysql没有oracle记录的那么多和详细,但也足够我们查询 ...
- mysql单张表数据量极限_极限数据量范围的安全测试
mysql单张表数据量极限 When we develop security testing within inconsistent data volume situations, we should ...
- oracle单表数据量上亿_MySQL数据库中,数据量越来越大,有什么具体的优化方案么?...
个人的观点,这种大表的优化,不一定上来就要分库分表,因为表一旦被拆分,开发.运维的复杂度会直线上升,而大多数公司和开发人员是欠缺这种能力的. 所以MySQL中几百万甚至小几千万的表,先考虑做单表的优化 ...
最新文章
- mysql 函数返回表格_mysql 数据分析如何实现日报、周报、月报和年报?
- python创建虚拟环境sublime_如何设置python 虚拟环境 sublime text
- 【整合篇】Activiti业务与流程的整合
- Lagrange equation
- neo4j安装_基于Neo4j的知乎关系爬虫
- python butter带通滤波器滤波出来的信号有NAN值或者分类效果极差
- 中关村windows11 32位专业版镜像v2021.07
- FreeSwitch+Sipml5实现SIP协议WebRTC视频聊天(没呼叫成功)
- 《深入浅出WPF》学习笔记之一
- java项目 ppt,Java项目报告ppt
- php 使用PayPal 支付
- nvme分区选mbr还是guid_老毛桃winpe的DiskGenius分区工具使用说明
- CSDN个人博客如何上传图片
- php tsrmg,php内核分析(二)-ZTS和zend_try
- 网易云邮箱如何添加网页企业级账号
- 人工蜂群算法(ABC算法)
- ​iPhone 14 Pro 全系降价 700 元;Gmail 之父:有了 ChatGPT,搜索引擎活不过两年了|极客头条...
- java 计算某个时间段在多个时间段中分别用时
- 51单片机学习2——DS1302制作简易数码管电子时钟
- ElasticSearch IK Analyzer 远程扩展字典remote_ext_dict无效
热门文章
- MMS的基本特征与特点(转)
- win10+ASP.NET(VS2019)连接sqlsever数据库
- 官宣:两校合并,落户省会!
- 寻找发帖水王java_SWUST_OJ 水王发帖排序
- 什么是python语言的解释性?
- 项目四:学生信息管理系统
- Blue Coat 2.8亿美元收购云安全创业企业Elastica
- 1007 素数对猜想 (20 分)(打表)
- lame编程实现wav转mp3后时长错误的问题
- 统计学基础——方差、协方差、标准差(标准偏差/均方差)、标准误、均方误差、均方根误差(标准误差)的区别