数据类型
整数类型
thinyint(4) 1 smallint(6) 2 mediumint(9) 3 int(11) 4 bigint(20) 8字节
属性 ussigned aerofill
长度 可以为整数类型指定宽度,例如:int(11) 对大多数应用是没有意义的,它不会限制值的合法范围,只会影响显示字符的个数
实数类型
float 4
double 8
decimal(M,D) M+2 字节 M参数称为精度,是数据的总长度,小数点不占位置。D参数成为标度,是指小数点后面的长度是D。
定点数以字符串形式存储,其精度比浮点数更高;可用于存储精确小数。
字符串类型
varchar(M) 0-65536 可变长,会多出 1 到 2 个字节来确定存储的实际长度。
char(M) 0-255 括号里面写的是字符长度,char是定长的,会根据需要采用空格填充,适合存储比较短的字符串,或者长度接近的,如果手机号码,md5后32位的密码 身份证号码,超出长度会被截断。
对于经常变更的数据,char比varchar更好,char不容易产生碎片
对于非常短的列,char比varchar在存储空间上更有效率
text 尽量少使用,查询会使用临时表,导致严重的性能开销
enum 枚举 实际就是使用整型来存储,不要使用数字做为枚举的常量,易混乱
日期和时间类型
尽量使用timestamp,比datetime空间效率高,用户整数保存时间戳的格式通常不方便处理,需要存储微秒,可使用bigint存储。
基础操作
连接 mysql -u -p -h -P
其它 \G垂直显示、 \c 取消、\q 退出、\s 服务器状态、\h帮助信息
存储引擎
InnoDB
默认事务型引擎,最重要最广泛的存储引擎,性能非常优秀,数据存储在共享表空间,可以通过配置分开,对主键查询的性能高于其它类型的存储引擎,内部做了很多优化,从磁盘读取数据时自动在内存构建hash索引,插入数据时自动构建插入缓冲区。
通过一些机制和工具支持真正的热备份,支持崩溃后的安全恢复,支持行级锁,支持外键
MyISAM
5.1版本前为默认引擎,拥有全文索引,压缩,空间函数,不支持事务和行级锁,不支持崩溃后的安全恢复,表存储在两个文件,MYD和MYI。设计简单,某些场景下性能很好
其它
Archive blackhole csv memory
锁机制
表锁是日常开发中常见的问题,当多个数据查询同一时刻进行数据修改时,就会产生并发控制的问题。
共享锁(读锁)、排他锁 (写锁
事务处理、存储过程、触发器
锁粒度
表锁 系统性能开销最不,会锁定整片表,myisam使用表锁
行锁 最大程度支持并发处理,但是也带来了最大的锁开锁,innodb实现行级锁