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 释放读锁

浙公网安备 33010602011771号