大数据高并发下表如何扩展字段?

数据模型设计心得 首先简单的说一下我对数据、模型、数据模型、数据模型要素以及数据模型的分类的理解。 数据:是符号。例如 张三。 模型:现实世界事与物特征的抽象与模拟。如飞机模型、空气动力模型。 数据模型:通过对现实世界的事与物主要特征的分析、抽象,为信息系统的实施提供数据存取的数据结构以及相应的约束。 数据模型的要素有操作、数据结构以及约束。通常情况下我们在数据模型设计的时候考虑最多的是数据结构而忽视了其他两 阅读详情

表字段扩展方案

背景

业务需要,开发了新功能,对应的,需要对原表新增一些必要字段。想当然的

alter table add column

相信很多朋友和我一样,认为没问题。的确,针对一般的项目OK,为啥?因为数据量不大的小站当然没问题,alter造成的也是可以接受的。但是,针对数据量大且并发高的这肯定是有问题的。
于是,博主研究了一些成熟的应对方案。

解决方案

pt-online-schema-change

原理
以user(uid, name, passwd)
扩展到user(uid, name, passwd, age, sex)为例
基本原理是:

  1. 先创建一个扩充字段后的新表user_new(uid, name, passwd, age, sex)
  2. 在原表user上创建三个触发器,对原表user进行的所有insert/delete/update操作,都会对新表user_new进行相同的操作
  3. 分批将原表user中的数据insert到新表user_new,直至数据迁移完成
  4. 删掉触发器,把原表移走(默认是drop掉)
  5. 把新表user_new重命名(rename)成原表user

操作过程中需要注意:

  1. 变更过程中,最重要的是冲突的处理,一条原则,以触发器的新数据为准,这就要求被迁移的表必须有主键(这个要求基本都满足)
  2. 变更过程中,写操作需要建立触发器,所以如果原表已经有很多触发器,方案就不行(互联网大数据高并发的在线业务,一般都禁止使用触发器)
  3. 触发器的建立,会影响原表的性能,所以这个操作建议在流量低峰期进行

优点
整个过程不需要锁表,可以持续对外提供服务

建议

以上即为主流的大表新增字段的DBA解决方式,其实,更好的方案是设计表阶段就尽量规划好,有如下两种比较好的方案:

  1. 预留出足够的字段备用,“足够”怎么理解?需要一个熟悉业务的规划好。预留多了占用不少空间,预留少了也是没有意义,把握好度
  2. 可以采用“通用基础字段+version字段+ext字段”来设计表,通用基础字段即该表存储数据行的共性字段,ext字段是扩展字段,存储除了共性字段的其它个性字段的json字符串,verison字段用来标识ext代表的意义。注意,mysql此种方式ext中的字段不支持索引和查询(非要采用的话,需要特殊逻辑处理),MongoDB是支持的。
    针对数据量不大,并发不高的可以采取简单的方式:
  3. alter table add column
  4. 新增扩展表,用过联表查询来扩展(切记:大并发,大数据的不能用此方式,性能差劲)

请关注我的订阅号

订阅号.png

等保2.0大数据安全扩展要求一级二级三级四级测评项详细对比表.xlsx 等保2.0大数据安全扩展要求一级二级三级四级测评项详细对比,附每一级别的权重值; 权重对比表,明细表,测评项对比表。 立即下载

相关推荐

数据库高并发情况下重复值写入的避免 字段组合约束

10线程同时操作,频繁出现插入同样数据的问题的解决方法。大家可以参考下。

并发的几个解决方案

1、 最简单的,页面的《提交》按钮,在点击后(校验通过后)Disabled,这样用户就不会重复点击《提交》按钮; 2、 数据库表增加唯一性索引(比如memberId),这个只能解决一般(为什么一般,继续看)并发插入的问题; 如果两条一样的数据插入,只有一条会成功,另外一次插入失败; 3、 使用乐观锁,在Table里增加一个version int字段,这个可以保证更新操作的并发问题; Sel...

lixjluck的专栏 307

给STM32 LWIP做一次‘性能体检’:手把手教你用Wireshark和iperf诊断网络瓶颈

本文详细介绍了如何使用Wireshark和iperf工具对STM32 LWIP网络性能进行全面诊断,帮助开发者精准定位网络瓶颈问题。通过搭建测试环境、集成iperf测试框架、深度报文分析和LWIP配置优化,实现从9KB/s到80MB/s的性能飞跃,特别适用于解决TCP发送速率和卡死问题。

weixin_29631169的博客 288

大数据量、高并发下的表字段扩展方案(转)

节选和总结自:沈剑大佬的 啥,又要为表增加一列属性? 、这才是真正的表扩展方案 两篇文章和文章评论 高并发且数据量大情况下的表字段扩展 实际中用的最多是的是方案三和方案五 方案一:版本号 + 通用列 表新增 2 列,一列是扩展字段,一列是版本号,版本号是扩展字段属性的迭代版本。扩展字段值是一个json,每次新增字段,添加一个key就行。 每个业务一个版本或者每次新增一个字段是一个新版本。 优点:...

Lucky小黄人的博客 1460

10.2 在新能源、储能及电网节点的应用实践

构网型变流器技术在电力系统中的应用进展 构网型变流器技术正从理论研究走向规模化工程应用,为新能源并网提供主动支撑能力。该技术在光伏电站采用"部分构网"混合架构,由构网单元实现黑启动和弱网稳定;在风电场利用叶轮动能提供惯量响应。储能系统是理想的构网载体,可提供快速调频和动态电压支撑。在电网节点,构网型STATCOM可增强弱电网电压稳定性,大容量变流器可替代传统调相机。当前面临标准滞后、宽频振荡风险等共性挑战,需在可靠性、经济性间取得平衡。系统级协调控制和精确阻抗建模是应用成功的关键。

技术工作者 1109

计算机导论期末知识点及试题总结 [近三万字总结 · 全]

计算机网络:计算机网络是利用通信线路连接起来相互独立的计算机的集合,其主要目的是实现数据通信和资源共享。 计算机病毒:破坏计算机功能或数据,影响计算机使用,并能自我复制的一组计算机指令或程序。 操作系统:操作系统是由程序和数据结构组成的大型系统软件,它负责计算机的全部软硬件的资源分配,调度和管理,控制各类程序的正常执行,并为用户使用计算机提供良好的环境。 高速缓冲储存器(Cache):位于cpu和内存之间的储存器,其特点是速度快,目的是是储存器的速度与cpu的速度相匹配。 总线:若干信号线的集合,是

这个人好有趣....hh 1万+

如何给1个大数据量的表添加一个新的字段?

alter table XX add xx varchar(15)

ljx_1997的博客 1741

【在英伟达nvidia的jetson-orin-nx上使用调试can基础收发-硬件连接-开机自启动can-初步调试】

近期开始学习英伟达的工控板,作为新手还是有很多不同懂得地方,但是一部分它用的linux系统,有点像玩树莓派,通过自己一段时间学习can调试,终于可以简单通信了。开始的时候,自己也是什么都不是很懂,从新手一点点摸索过来,现在使用工控机,简单can通信也已经没有问题了,算是有些进步吧。每一步走的都很艰辛,需要反复验证,才能准去无误,开始以为发送没有问题就没事了,没想到发送可以却接受不行,每一步都要反复确认啊,这个问题会持续关注下吧。

qq_22146161的博客 6120

PostgreSQL 超大表数据操作

公司数据库中某表数据量达到了4亿多条,在增加索引以及相关的初步优化后效果不理想。因此,决定采用PostgresSQL的表分区,按照日期将该表的数据分散到各个分区上。 在分区表以及各个子表全部建立完毕后,发现服务器硬盘不足。那个大表大概占据了83G左右的空间,而服务器只有43G可用。如果,直接采用insert into new_table select * from old_table的话...

lovejuan1314的专栏 5721

欧姆龙NX控制器与Sysmac studio的电机配置方法

使用歐姆龍NX控制器與Sysmac studio控制電機簡單運動 <上> — 環境配置0. 前言1. 實際硬件連接2. Sysmac studio 配置2.1 新建工程2.2 通信設置2.2.1 軟件內通信設置2.2.2 上位機本地通信設置 0. 前言 筆者最近需要使用到歐姆龍的多軸運動控制器來控制電機運動,但網路上關於Sysmac studio的教程或文章較為零散,作為初學者的筆者難以消化,故在稍微會用軟件後撰寫本文,為自己留個筆記,同時希望能夠幫助到需要的人。 1.本文面向買了歐姆龍控制器

weixin_46005653的博客 1万+

解决fetch_california_housing数据集403错误的三种实用方法

本文针对机器学习初学者加载fetch_california_housing数据集时常见的HTTPError 403: Forbidden错误,提供了三种经过实测的解决方案。详细介绍了手动下载与本地替换、修改源码下载路径以及配置网络访问策略的具体步骤,帮助用户根据自身网络环境和开发场景选择最佳方法,确保数据集顺利加载。

weixin_29074295的博客 547

mysql alter 修改表字段

 -- 查看表结构describe bie_wish_list-- 添加字段alter table bie_wish_listadd redeem int(1) not null default '0'-- 修改字段ALTER TABLE bie_wish_list MODIFY redeem int(3) Default '10'-- 删除字段alter table bie_wish_li

薛秋艳的博客 593

【WorkBuddy专栏27】WorkBuddy 和 CodeBuddy 到底什么关系——一篇文章终结所有混淆

WorkBuddy 和 CodeBuddy 到底什么关系——一篇文章终结所有混淆

AI人人懂 2572

数据库表拓展方案

数据库表拓展方案 需求缘起 产品第一版:用户有用户名、密码、昵称等三个属性,对应表设计: user(uid, name, passwd, nick) 第二版,产品经理增加了年龄,性别两个属性,表结构可能要变成: user(uid, name, passwd, nick, age, sex) 特别说明是数据量大,并发量高场景 业界公认方案 新表+触发器+迁移数据+rename 即pt-onlin...

sunbocong的博客 2069

基于STM32的智能鞋柜系统设计与实现

摘要:本文设计并实现了一种基于STM32F103C8T6单片机的智能鞋柜系统。该系统通过DHT11温湿度传感器、PM2.5粉尘传感器和MQ-135空气质量传感器构建多维度环境监测网络,结合光电红外传感器和光敏传感器实现柜门状态识别与智能照明。系统采用分层控制策略,当温度低于15℃或湿度高于65%时自动启动加热和通风,PM2.5超标时启动通风,污染物浓度升高时激活紫外线杀菌。创新性地实现了柜门状态与紫外线消毒的双保险互锁机制,确保使用安全。测试结果表明,系统温湿度控制精度达±0.4℃/±2.0%RH,PM2.

3254968421的博客 252

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

表扩展方案

产品第一版:用户有用户名、密码、昵称等三个属性,对应表设计: user(uid, name, passwd, nick) 第二版,产品经理增加了年龄,性别两个属性,表结构可能要变成: user(uid, name, passwd, nick, age, sex)在互联网企业业务发展初期,或者业务变更期,表字段增加非常频繁,且由于线上环境的库非常多,为了一个小小的需求增加一个字段非常痛苦,为了不

专注赚钱的程序员 598

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

Sharding_JDBC分库分表

Sharding-JDBC分库分表

liugaoyuans的博客 335

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

【58沈剑架构系列】这才是真正的表扩展方案

事情变得有意思了,上一篇花1小时撰写的“一分钟”文章,又引起了广泛的讨论,说明相关的技术大家感兴趣,挺好。第一次一篇技术文章的评论量过100,才知道原来“评论精选”还有100上限,甚为欣慰(虽然是以一种自己不愿看到的方式)。 《啥,又要为表增加一列属性?》的方案颇有争议: (1)版本号version +扩展字段ext (2)用增加列的key+value方式扩充属性 ...

dengcu1321的博客 315

这才是真正的表扩展方案

事情变得有意思了,上一篇花1小时撰写的“一分钟”文章,又引起了广泛的讨论,说明相关的技术大家感兴趣,挺好。第一次一篇技术文章的评论量过100,才知道原来“评论精选”还有1...

shenjian58的博客 1297

58同城30条数据库三十条军规

军规适用场景:并发量大、数据量大的互联网业务 军规:介绍内容 解读:讲解原因,解读比军规更重要 文章目录一、基础规范二、命名规范三、表设计规范四、字段设计规范五、索引设计规范六、SQL使用规范 一、基础规范 (1)必须使用InnoDB存储引擎 解读:支持事务、行级锁、并发性能更好、CPU及内存缓存页优化使得资源利用率更高 (2)必须使用UTF8字符集 UTF-8MB4 解读:万国码,无需转码,无乱码风险,节省空间 (3)数据表、数据字段必须加入中文注释 解读:N年后谁tm知道这个r1,r2,r3字段是干嘛的

sdaujsj1的博客 379

java大数据、多线程及高并发的处理方案

大数据量处理、多线程和高并发的问题一直是Java技术面试中比较喜欢问的问题之一,遂在此做个总结 一、数据量太大获取缓慢怎么办? 貌似这个问题在所有开发的应用系统中都会碰到这个问题,随着时间的推移,由于需求的不断演变,项目的数据量日渐增多,功能上的效率问题也会逐步显露出来,例如统计报表、查询下载、地图渲染等功能模块,当这些功能涉及到几十张表甚至上百张表时,不难想象一次性获取所有数据的时候系统将会...

Mr.Xie的博客 1万+

MongoDB分片:打造高性能大数据与高并发处理的完美解决方案

MongoDB 分片是一种有效的数据水平扩展方法,可以帮助应对大数据量和高并发访问的需求。通过合理配置和管理分片集群,可以实现系统的高性能、高可用性和可扩展性。在实际应用中,需要根据具体场景和需求,选择合适的分片键和配置方案,以实现最佳的系统性能和稳定性。

欢迎来到技术蜜糖罐的IT角落! 2641

mysql千万级数据表,创建表及字段扩展的几条建议

一:概述 当我们设计一个系统时,需要考虑到系统的运行一段时间后,表里数据量大约有多少,如果在初期,就能估算到某几张表数据量非常庞大时(比如聊天消息表),就要把表创建好,这篇文章从创建表,增加数据,以及字段扩展,这几个方面来给出建议。 二:创建表   假如现在我们需要创建IM项目中的聊天消息表,这个表数据量大,读操作远超过写操作,我们都知道,mysql常用的数据库引擎主要有in...

weixin_30446197的博客 879

mysql表扩展方案

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34380781的博客 1105
上一篇: 并发下的库存如何扣?
下一篇: 优化-处理大量定时任务的思路
码哥说
博客等级 码龄8年 5645粉丝 172原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码哥说

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值