成都创新互联网站制作重庆分公司

mysql单表过大怎么办 mysql单表建议大小

如何对 MYSQL 大数据库执行表数据删除操作,单表数据量超过 15.6G

delete 语句不影响表所占用的 extent,高水线(high watermark)保持原位置不动

在禄劝等地区,都构建了全面的区域性战略布局,加强发展的系统性、市场前瞻性、产品创新能力,以专注、极致的服务理念,为客户提供成都网站设计、做网站、成都外贸网站建设公司 网站设计制作定制开发,公司网站建设,企业网站建设,品牌网站设计,网络营销推广,外贸营销网站建设,禄劝网站建设费用合理。

drop 语句将表所占用的空间全部释放。

truncate 语句缺省情况下见空间释放到 minextents个 extent,除非使用reuse storage;truncate 会将高水线复位(回到最开始)。

mysql 数据库数据有点大,单表数据平均60M左右,mysql启动非常慢。

要增加mysql占用的内存,让他启动快点,直接加大系统内存即可。

同时减少其他启动软件也可以。

mysql单库负载过高的处理方式

请点击输入图片描述(最多18字)

经常混迹于技术社区,频繁看到这个题目,今天干脆在自己博客重复一遍解决办法:

针对mysql,sqlserver等关系型数据库单表数据过大的处理方式

如果不是阿里云的分布式数据库 DRDS 那种多机器集群方案的话: 先考虑表分区 ;然后考虑分表 ;然后考虑分库。

这个题目是我所经历过的,我做的是GPS应用,早期版本就是选用的关系型数据库Sql Server。当时我选取的方案就是第一种:表分区。 表分区的优势是,如果表结构合理,可以不涉及到程序修改。也就是说,对程序来讲依然是单表读写的效果!

所有轨迹数据存入到一个巨大的表里。有多大呢?

最大存储量超过10亿行。具体数值应该是12亿多点,由于系统设计为只存储30天轨迹,所以线上期间最大存储只到这个数,再后来采用云架构,上云替换成非关系性数据库,获得了更高的写入性能和存储压缩能力。  

每日写入量就超过1500万行。上下班交通高峰时候每秒写入量平均超过500行。也就是500iops,距离系统设计的压测指标3000还有一大截

这张大型单表设计要点:(一个聚集索引用于写入,一个联合索引用于查询,没有主键,使用表分区)

明确主键用途:

真的需要查询单行数据时候才需要主键!

我采用无主键设计,用于避免写入时候浪费维护插入数据的性能。最早使用聚集的类似自增的id主键,压测写入超过5亿行的时候,写入性能缩减一半

准确适用聚集:

写入的数据在硬盘物理顺序上是追加,而不是插入!

我把时间戳字段设置为聚集索引,用于聚集写入目的设计。保证硬盘上的物理写入顺序,不浪费性能用于插入数据

职责足够单一: 

用于精准索引!

使用时间+设备联合索引,保证这张表只有一个查询用途。保证系统只有一种查询目的:按照设备号,查询一个时间段的数据。

精确的表分区:

要求查询时候限定最大量或者最大取值范围!

按天进行表分区,实现大数据量下的高效查询。这里是本文重点,按照聚集索引进行,可以让目标数据局限在更小的范围进行,虽然单表数据上亿,但是查询基本上只在某一天的的几千万里进行索引查询

每张表会有各自的特点,不可生搬硬套,总结下我这张表的特点:

只增,不删,不改!

关于不删除中:每天使用作业删除超过30天的那个分区数据除外,因为要清空旧的表分区,腾出新的表分区!

只有一个业务查询:只按照设备编码查询某个时间段

只有一个运维删除:删除旧的分区数据

这张表,是我技术生涯中进步的一个大阶梯,让我我体会到了系统架构的意义。

虽然我的这张举行表看似只有4个关键点,但是这四个非常精准的关键点设计,耗费了我一个月之久!正是这么足够精准的表结构设计,才撑起了后来压测并发量超过3000的并发写入量!压测的指标跟数据库所在的硬盘有直接关系,当时选取的硬盘是4块10000转的SAS盘做了Raid10的环境

关于后来为什么没有更高的实际应用数值,是因为系统后来改版为云架构,使用了阿里云,更改为写入性能更高的非关系型数

MySQL数据库单一表怎样突破4G限制

1. 表中设置了max_rows值,简单的说,若max_rows设置为100,而程序试图写入第101条记录,会出现此错误。 2. 表满。这种情况是本文讨论的重点 我们认为mysql在存取表的时候,存在一种定位分配规律。这个规律在默认的情况下,可以寻址4g以内的数据。超过这个大小,数据库将不能对数据定位,因而也无法进行读写。经过实验,这个限制是完全可以被突破的。 本例中,用户的系统环境为双athlon处理器、scsi硬盘72g、2g内存,用户的帖子表数据尺寸为4294963640,接近4g(4g的实际字节数为4294967296)。 首先ssh登录后,查看用户的系统信息: # uname -a linux zichen.com 2.4.20-8smp #1 smp thu mar 13 16:43:01 est 2003 i686 athlon i386 gnu/linux 证明是linux系统,根据内核版本2.4.20-8smp,加上国内使用的常见系统,估计应该是redhat 9发行包。

Mysql单表太大,性能受影响求指点

在查询的时候加个时间或者其他的限制吧。比如查询前一个月的。不是每个数据都需要查询全部的数据的。

=。=有人点赞了,那就完善一下回答:

查看索引,如果是时间条件查询的报警,那么看看是不是这个字段加了索引。

减少不需要的数据。可以删掉不需要的数据。比如3个月前的。

不想删也行。历史数据单独存表。

分区。


本文题目:mysql单表过大怎么办 mysql单表建议大小
链接地址:http://cxhlcq.com/article/hhejoj.html

其他资讯

在线咨询

微信咨询

电话咨询

028-86922220(工作日)

18980820575(7×24)

提交需求

返回顶部