markdy
今天又上游团队的同事通过内部平台提问了GaussDB的相关问题,下面这个问题,顺便记录在此。
本文关于字段、记录、行大小的数量限制和合理取值。
字段数量
以mysql为例,实践经验是不超过20的字段。 字段首先符合设计范式要求,自然就有合理的字段数量了,其次假设当某表的字段仍然太多时,可以根据业务情况进行拆分,比如根据常用字段和非常用字段将一张表拆分成两张。
Row Size
单条记录的大小不应超过硬盘的扇区大小,一般是4k
单张表多少个字段其实没有什么定论,只要不超过数据库限定的个数就好,但是表的单条记录的大小是有合理空间的,也就是需要根据具体硬件和操作系统来确定单条记录(row size)的大小:一般来说,现在硬盘的扇区大小都是4K(有些硬盘可以到16K),所以存储基于操作系统的MySQL单条记录的合理大小应不超过硬盘的扇区大小。如果超出意味着查找单条记录时需要多个磁盘扇区去查找,增加了寻道时间,单表数据量大了性能会下降。同时MySQL配置的缓存页大小即innodb_page_size,也要配置成硬盘扇区大小差不多大小,从而减少数据库checkpoint从缓存往磁盘写数据的工作量。话说回来,其实这些并不十分重要,因为一般系统出现性能问题大概率是在应用程序的质量上。
BOLB 或者 TEXT 字段
假如一行中有很多巨大的 BOLB 或者 TEXT 字段,表的存储能力就会受限制。
记录数量
以mysql为例,实践经验是不超过500w条记录。一般来说,数据量到达一千万以后,增删改查就很慢了。 如果存储大型数据基本上还是建议 SQL Server 或者是 Oracle。
记录数量限制
一般数据库默认都会有限制,可更改。 注意:navicat默认快速打开表限制1000行,但不是数据库有限制。 表空间内存也可以设置限制。