mysql 数据类型的一些简单认识
基本数据回顾
数值类型
日期以及时间类型
字符串类型
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
MySQL 单表数据最大不要超过多少行?为什么?
一张表在保证查询性能的前提下,能存储的记录行数与每行记录的大小有关。通过对互联网业务数据进行统计发现,单行记录数据的大小超过1k的并不太多,单行记录的平均大小不到0.5k(0.5k左右),也就是说,能存储的行记录上限在四千万~五千万。
如果我单行数据用不了这么多,比如只用了250byte。那么单个数据页能放60行数据。单表1个亿,但查询性能没啥大毛病。
具体可以查看 MySQL 单表数据最大不要超过多少行?为什么?