week1-高性能MySQL 第四章

数据类型

整型:tinyint(8)、smallint(16)、mediumint(24)、int(32)、bigint(64)()内为所占位数。可选不符号unsigned
注意:int(n)n不影响所占位数,仅影响MySQL交互中显示的位数。

实数类型:
DECIMAL 精确类型,4字节存9个数字。使用场景:钱
非精确类型:Double 8字节 float 4字节

字符型:
varchar 可变长字符,需要使用1或2个字节记录长度,大于255使用2个字符。

BLOB与TEXT类型
Blob二进制,text字符

日期和时间类型
datetime YYYYMMDDHHMMSS 从1001年到9999年,精度为秒。8字节。
timestamp 时间戳,从1970年1月1日0点从现在的秒数。4字节。时常用的时间类型。

加速ALTER TABLE

MySQL中,ALTER TABLE一般会创建一个新表,从旧表中查询数据并插入新表,然后删除旧表。
常用技巧:
1、在一台空闲服务器上执行ALTER TABLE操作,然后和主库进行切换
2、影子拷贝,用要求的表结构创建新表,通过重命名和删除操作交换两张表。

对不引起表重建的ALTER操作,可以通过修改.frm文件进行。

--引起表重建 可以SHOW STATUS 查看操作计数
ALTER TABLE xx MODIFY COLUMN XX TINYINT(3) NOT NULL DEAFAULT 5; 
--通过ALTER COLUMN操作直接修改.frm文件,不涉及表数据
ALTER TABLE xx ALTER COLUMN xx TINYINT(3) NOT NULL DEAFAULT 5;

不安全的加速操作

没有文档说明不受官方支持
1、移除一个列的auto_increment属性
2、增加、移除,enum和set中的元素。
方法:
1、创建空表,并进行需要的修改
2、执行FLUSH TABLES WITH READ LOCK 上锁
3、交换.frm文件
4、执行UNLOCK TABLES 释放读锁

posted @ 2020-06-04 16:35  bb不bb  阅读(97)  评论(0)    收藏  举报