char和varchar的使用
- 如果列中要存储的数据长度差不多是一致的,则应该考虑用char;否则应该考虑用varchar。
比如:身份证号,订单编号,电话。 - 如果列中的最大数据长度小于50Byte,则一般也考虑用char。
(当然,如果这个列很少用,则基于节省空间 和减少I/O的考虑,还是可以选择用varchar) - 一般不宜定义大于50Byte的char类型列。
MyISAM和InnoDB的对比
对比项 | MyISAM | InnoDB |
---|---|---|
主外键 | 不支持 | 支持 |
事务 | 不支持 | 支持 |
行表锁 | 表锁,即使操作一条记录也会锁住整个表,不适合高并发 | 行锁,操作时,只锁某一行,不对其他的行有影响,适合高并发 |
缓存 | 只缓存索引,不缓存真实数据 | 不仅缓存索引,还缓存真实数据,对内存要求较高,而且内存大小对性能有决定性的影响 |
表空间 | 小 | 大 |
关注点 | 性能 | 事务 |
默认安装 | 是 | 是 |