mysql 数据类型的一些简单认识

150 阅读2分钟

mysql 数据类型的一些简单认识

基本数据回顾

数值类型

image-20230629100802343

日期以及时间类型

image-20230629100913171

字符串类型

image-20230629101004484

utf8(默认utfmb3) 与utfmb4

utf8mb4是MySQL / MariaDB中的一种字符集。

在当前主流版本的MySQL / MariaDB中,使用utf8作为字符集时,默认表示的是utf8mb3。

关于utf8mb3和utf8mb4,其主要区别在于:most bytes 3和most bytes 4,即最多使用3 / 4个字节来表示1个字符!所以,当使用utf8mb4时,可以表示更多字符,例如生僻汉字、冷门符号、emoji表情符号等。

1个中文字符=3个字节 1个字节=8个位 一个英文字母字符存储需要1个字节

 LENGTH(str) 返回字符串str的长度,以字节为单位
 CHAR_LENGTH(str)  返回字符串str的长度,以字符为单位(汉字的个数)

查看表空间

 use information_schema;
 select TABLE_ROWS, concat(round(sum(DATA_LENGTH/1024), 2),'KB') as totalSize, concat(round(sum(DATA_LENGTH/1024), 2),'KB')/TABLE_ROWS as recordSize from TABLES where table_schema='yunwei' and table_name='js_sys_post';

查看表索引

 SELECT * FROM information_schema.statistics WHERE table_schema = 'yunwei' AND table_name = 'js_sys_post';

快速查看一行数据所占的多少字节

从数据库中复制一行数据,到notepad++ 工具中,直接查看 length 这个数值,就是代表一行数据有多少行byte

image-20230629102435374

MySQL 单表数据最大不要超过多少行?为什么?

一张表在保证查询性能的前提下,能存储的记录行数与每行记录的大小有关。通过对互联网业务数据进行统计发现,单行记录数据的大小超过1k的并不太多,单行记录的平均大小不到0.5k(0.5k左右),也就是说,能存储的行记录上限在四千万~五千万。

如果我单行数据用不了这么多,比如只用了250byte。那么单个数据页能放60行数据。单表1个亿,但查询性能没啥大毛病。

具体可以查看 MySQL 单表数据最大不要超过多少行?为什么?