首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

记录一次MySQL拆分和迁移

背景# 最近遇到一个关于MySQL过大的问题,该存放的主要是日志文件,且其中有一个字段存放的数据过大,导致占用空间过大以及查询效率的降低,这种设计其实是不合理的。...目前该占用1.2T容量,数据量超过3亿条,而这个RDS数据库的容量总共就2T,且由于种种原因无法扩容,迫不得已急需给出解决方案。 2....解决方案# 根据上面的背景,可得出以下这些问题,也给出了解决方案: 问题 解决方法 1 某字段占用空间较大,在MySQL中为text类型,存储的是json格式的数据,该字段平均占用空间为5KB 对字段进行压缩...,把json格式压缩成字节序列,压缩后可节省5倍空间左右 2 单数据量过大,而我们的业务是基本只取本年的数据,该中很多不使用的数据导致查询效率降低 对该按年份分,本年的数据为热数据,之前的数据为冷数据...log_table,这种方式不仅命中了索引,还避免了全扫描 2.2.2 步骤二压缩# 上面查出了1万条数据,接着要做的就是批量压缩,如果采用for循环1个1个的压缩,那么效率必然不是最高的,可以利用go

1.3K10
您找到你想要的搜索结果了吗?
是的
没有找到

MySQL设计

数据库设计结构设计垂直分割:将分割成多个相关性较小的,以减少单个的字段数量。这有助于提高查询效率和降低冗余。规范化:合理使用规范化,将重复数据抽取成独立的,以减小数据冗余。...TABLE main_data ( id INT PRIMARY KEY, field_1 VARCHAR(255), field_2 INT, -- 其他字段);-- 例子:关联CREATE...分库分如果数据量仍然巨大,可以考虑分库分策略,将数据划分到不同的数据库或中。4. 数据分区根据时间、范围等条件对数据进行分区,以提高查询效率。5....垂直分割对于一些很少使用的字段,可以考虑将其垂直分割到其他中,只在需要时进行关联查询。6. 数据库参数调优调整数据库的参数,如缓冲池大小、连接池大小等,以适应大规模数据的存储和查询需求。

13610

Mysql优化方案

MySQL单表记录数过大时,增删改查性能都会急剧下降,可以参考以下步骤来优化: 单优化 除非单数据未来会一直不断上涨,否则不要一开始就考虑拆分拆分会带来逻辑、部署、运维的各种复杂度,一般以整型值为主的在千万级以下...分区 MySQL在5.1版引入的分区是一种简单的水平拆分,用户需要在建的时候加上分区参数,对应用是透明的无需修改代码 对用户来说,分区是一个独立的逻辑,但是底层由多个物理子表组成,实现分区的代码实际上是通过对一组底层的对象封装...垂直分是对数据进行垂直拆分的一种方式,常见的是把一个多字段的按常用字段和非常用字段进行拆分,每个表里面的数据记录数一般情况下是相同的,只是字段不一样,使用主键关联 比如原始的用户是: ?...) 事务处理复杂 水平拆分 概述 水平拆分是通过某种策略将数据分片来存储,分库内分和分库两部分,每片数据会分散到不同的MySQL或库,达到分布式的效果,能够支持非常的数据量。...IO、CPU、网络,这个就要通过分库来解决 前面垂直拆分的用户如果进行水平拆分,结果是: ?

2.7K71

MySQL 优化方案

优化 除非单数据未来会一直不断上涨,否则不要一开始就考虑拆分拆分会带来逻辑、部署、运维的各种复杂度,一般以整型值为主的在 千万级以下,字符串为主的在 五百万以下是没有太大问题的。...,它包括数据库教程函数、计算表达式等等,查询时要尽可能将操作移至等号右边 sql语句尽可能简单:一条sql只能在一个cpu运算;语句拆小语句,减少锁时间;一条sql可以堵死整个库 不用 SELECT...分区 MySQL在5.1版引入的分区是一种简单的水平拆分,用户需要在建的时候加上分区参数,对应用是透明的无需修改代码 对用户来说,分区是一个独立的逻辑,但是底层由多个物理子表组成,实现分区的代码实际上是通过对一组底层的对象封装...垂直分是对数据进行垂直拆分的一种方式,常见的是把一个多字段的按常用字段和非常用字段进行拆分,每个表里面的数据记录数一般情况下是相同的,只是字段不一样,使用主键关联 比如原始的用户是: 垂直拆分后是...) 事务处理复杂 水平拆分 概述 水平拆分是通过某种策略将数据分片来存储,分库内分和分库两部分,每片数据会分散到不同的MySQL或库,达到分布式的效果,能够支持非常的数据量。

1.7K40

MySQL优化方案

1、尽量不要在一开始就考虑拆分,会带来逻辑、部署、运维的各种复杂度; 2、一般以整型值为主的在千万级以下,字符串为主的在五百万以下问题不大; 注意: 1、Covering index:...索引覆盖:即当索引本身包含查询所需全部数据时,不再访问数据文件本身,也就是不再需要回操作; 2、复合索引顺序:理论上索引对顺序是敏感的,但是由于MySQL的查询优化器会自动调整where子句的条件顺序以使用适合的索引...很难查询优化且占用额外索引空间; 用整型来存IP; 2、索引 索引不是越多越好,要根据查询有针对性的创建,考虑在WHERE和ORDER BY涉及到的列建索引,可以根据EXPLAIN来查看是否用了索引还是全扫描...; 避免在WHERE子句中对字段进行NULL值判断,否则将导致全扫描; 值分布稀少的字段不适合建立索引,如“性别”的这种; 字符字段只建立前缀索引【注意:不能用于ORDER BY和GROUP BY操作...; SQL语句尽可能简单: -- a、一条SQL只能在一个CPU运算; -- b、语句拆小语句,减少锁时间; -- c、一条SQL可以堵死整个库; 不用 SELECT * ; OR 改写成 IN

1K20

MySQL 优化方案

MySQL单表记录数过大时,增删改查性能都会急剧下降,可以参考以下步骤来优化: 单优化 除非单数据未来会一直不断上涨,否则不要一开始就考虑拆分拆分会带来逻辑、部署、运维的各种复杂度,一般以整型值为主的在千万级以下...分区 MySQL在5.1版引入的分区是一种简单的水平拆分,用户需要在建的时候加上分区参数,对应用是透明的无需修改代码 对用户来说,分区是一个独立的逻辑,但是底层由多个物理子表组成,实现分区的代码实际上是通过对一组底层的对象封装...垂直分是对数据进行垂直拆分的一种方式,常见的是把一个多字段的按常用字段和非常用字段进行拆分,每个表里面的数据记录数一般情况下是相同的,只是字段不一样,使用主键关联 比如原始的用户是: ?...(需要水平拆分) 事务处理复杂 水平拆分 概述 水平拆分是通过某种策略将数据分片来存储,分库内分和分库两部分,每片数据会分散到不同的MySQL或库,达到分布式的效果,能够支持非常的数据量...IO、CPU、网络,这个就要通过分库来解决 前面垂直拆分的用户如果进行水平拆分,结果是: ?

1.3K40

MySQL 优化方案

MySQL单表记录数过大时,增删改查性能都会急剧下降,可以参考以下步骤来优化: 单优化 除非单数据未来会一直不断上涨,否则不要一开始就考虑拆分拆分会带来逻辑、部署、运维的各种复杂度,一般以整型值为主的在千万级以下...分区 MySQL在5.1版引入的分区是一种简单的水平拆分,用户需要在建的时候加上分区参数,对应用是透明的无需修改代码 对用户来说,分区是一个独立的逻辑,但是底层由多个物理子表组成,实现分区的代码实际上是通过对一组底层的对象封装...垂直分是对数据进行垂直拆分的一种方式,常见的是把一个多字段的按常用字段和非常用字段进行拆分,每个表里面的数据记录数一般情况下是相同的,只是字段不一样,使用主键关联 比如原始的用户是: ?...(需要水平拆分) 事务处理复杂 水平拆分 概述 水平拆分是通过某种策略将数据分片来存储,分库内分和分库两部分,每片数据会分散到不同的MySQL或库,达到分布式的效果,能够支持非常的数据量...IO、CPU、网络,这个就要通过分库来解决 前面垂直拆分的用户如果进行水平拆分,结果是: ?

1.5K10

MySQL优化方案

MySQL单表记录数过大时,增删改查性能都会急剧下降,可以参考以下步骤来优化:   单优化   除非单数据未来会一直不断上涨,否则不要一开始就考虑拆分拆分会带来逻辑、部署、运维的各种复杂度,...分区   MySQL在5.1版引入的分区是一种简单的水平拆分,用户需要在建的时候加上分区参数,对应用是透明的无需修改代码   对用户来说,分区是一个独立的逻辑,但是底层由多个物理子表组成,实现分区的代码实际上是通过对一组底层的对象封装...MySQL有一种早期的简单的分区实现 - 合并(merge table),限制较多且缺乏优化,不建议使用,应该用新的分区机制来替代   垂直拆分   垂直分库是根据数据库里面的数据的相关性进行拆分,...垂直分是对数据进行垂直拆分的一种方式,常见的是把一个多字段的按常用字段和非常用字段进行拆分,每个表里面的数据记录数一般情况下是相同的,只是字段不一样,使用主键关联   比如原始的用户是: ?...(需要水平拆分) 事务处理复杂   水平拆分   概述   水平拆分是通过某种策略将数据分片来存储,分库内分和分库两部分,每片数据会分散到不同的MySQL或库,达到分布式的效果,能够支持非常的数据量

3K61

MySQL优化方案

背景 阿里云RDS FOR MySQLMySQL5.7版本)数据库业务每月新增数据量超过千万,随着数据量持续增加,我们业务出现慢查询,在业务高峰期主业务的慢查询需要几十秒严重影响业务 方案概述...TINYINT类型代替枚举ENUM 存储精确浮点数必须使用DECIMAL替代FLOAT和DOUBLE 字段长度严重根据业务需求来,不要设置过大 尽量不要使用TEXT类型,如必须使用建议将不常用的大字段拆分到其它...MySQL对索引字段长度是有限制的, innodb引擎的每个索引列长度默认限制为767字节(bytes),所有组成索引列的长度和不能大于3072字节(mysql8.0单索引可以创建1024字符) 有...并行查询适用于大部分SELECT语句,例如查询、多表连接查询、计算量较大的查询。对于非常短的查询,效果不太显著。...五、交互式分析Hologre 慢查询我们虽然用并行查询优化提升了效率,但是一些特定的需求实时报表、实时屏我们还是无法实现,只能依赖大数据去处理。

1.5K11

atlas拆分

『 前提 』 在学习游戏开发构成中,有时候需要找到一些漂亮的图,作为演示效果,一般都会网上搜集一些,现成的游戏图,基本上都会合成大图发布,图片多起来,一张张裁剪,工作量繁重,如果能有图信息的文本文件和图原文件...,可以考虑通过以下脚本实现图的拆分,不同格式的文件,都可以根据这个原理进行,修改对应的读取格式代码,和保存图片代码即可。...『 效果预览 』 拆分前: ? 拆分后: ?...『 使用说明 』 *.atlas和*.png文件,放置在脚本根目录下,执行splitAtlas.py,根据提示,输入需要拆分图文件名,执行完成以后,就会新创建一个和图文件名相同的文件夹,小图都在目录下面

1.8K10

数据库的垂直拆分和水平拆分

的垂直拆分和水平拆分 垂直拆分 垂直拆分是指数据表列的拆分,把一张列比较多的拆分为多张 20191028234705.png 通常我们按以下原则进行垂直拆分: 把不常用的字段单独放在一张...; 把text,blob等大字段拆分出来放在附表中; 经常组合查询的列放在一张中; 垂直拆分更多时候就应该在数据设计之初就执行的步骤,然后查询的时候用join关键起来即可; 水平拆分 水平拆分是指数据行的拆分...拆分原则 通常情况下,我们使用取模的方式来进行拆分;比如一张有 400w 的用户users,为提高其查询效率我们把其分成4张users1,users2,users3,users4 通过用 ID...into uid_temp values(null); 得到自增的 ID 后,又通过取模法进行分插入; 注意,进行水平拆分后的,字段的列和类型和原应该是相同的,但是要记得去掉 auto_increment...——摘自《的垂直拆分和水平拆分

1.9K10

MySQL 优化方案(长文)

,否则不要一开始就考虑拆分拆分会带来逻辑、部署、运维的各种复杂度,一般以整型值为主的在千万级以下,字符串为主的在五百万以下是没有太大问题的。...,它包括数据库教程函数、计算表达式等等,查询时要尽可能将操作移至等号右边 3、sql语句尽可能简单:一条sql只能在一个cpu运算;语句拆小语句,减少锁时间;一条sql可以堵死整个库 4、不用SELECT...分区 MySQL在5.1版引入的分区是一种简单的水平拆分,用户需要在建的时候加上分区参数,对应用是透明的无需修改代码 对用户来说,分区是一个独立的逻辑,但是底层由多个物理子表组成,实现分区的代码实际上是通过对一组底层的对象封装...垂直分是对数据进行垂直拆分的一种方式,常见的是把一个多字段的按常用字段和非常用字段进行拆分,每个表里面的数据记录数一般情况下是相同的,只是字段不一样,使用主键关联,比如原始的用户是: 垂直拆分后是...(需要水平拆分) 事务处理复杂 水平拆分 概述 水平拆分是通过某种策略将数据分片来存储,分库内分和分库两部分,每片数据会分散到不同的MySQL或库,达到分布式的效果,能够支持非常的数据量。

1.4K50

快速安全删除MySQL

删除表相关的磁盘文件 二、创建硬链接 三、删除 四、删除文件释放空间 参考: ---- 在一个高负载的生产数据库上删除需要一些技巧,倘若直接drop table,将产生大量磁盘I/...1. buffer pool清除 删除时,MySQL会将在buffer pool中对应的页面清除,这个过程中会对buffer pool上一个全局排它锁。...通常可以使用以下三个步骤删除: 创建文件的硬链接。 drop table删除。 删除文件释放磁盘空间。 二、创建硬链接 一个磁盘上的存储文件,可以由多个文件名引用。...例如,在没有硬链接时,t1对应的磁盘文件如下: -rw-r----- 1 mysql mysql 17973 Jul 3 2018 t1.frm -rw-rw---- 1 mysql...可以使用以下脚本对一个数据库内的所有创建硬链接: # MySQL数据目录 datadir=`mysql -uroot -p123456 -S /data/mysqldata/mysql.sock -e

5.6K50

扫码

添加站长 进交流群

领取专属 10元无门槛券

手把手带您无忧上云

扫码加入开发者社群

相关资讯

热门标签

活动推荐

    运营活动

    活动名称
    广告关闭
    领券