一. char与varchar
1)char为固定空间存储, 实际数据不够会补够,超出长度则截断; varchar为不固定长度存储,使用额外的1-2个字节来存储长度信息。
2)char可能导致空间浪费, 但也可能有效减少空间碎片,上限255; varchar的情况相反,上限65535个字节(指定的长度表示的为字符,要考虑编码)
二. int(x)
x代表了int整型的最大显示长度。 int占4个字节, 无符号最大值4294729693, 即长度为10. 因此int(11)与int(12)本质上应该没有差别。
三. mysql的日志种类
错误日志: -log-err (记录信息包括: 服务启动或关闭, 运行过程的错误或警告, 事件调度器)
查询日志: -log
慢查询日志: -log-slow-queries
更新日志: log-update (一般都不会使用)
二进制日志: -log-bin (mysqlbinlog查看二进制文件)
四. show profile
用于分析sql执行的性能, 相对于explain, profile还可以查看执行的CPU/Memory使用情况。
五. 关于buffer size
对于myisam, 要设置合适的key_buffer_size大小; 因为myisam需要用到系统的缓存来缓存数据,因此需要为索引留出部分空间.
对于innodb, 要设置合适的innodb_buffer_pool_size大小; 因为innodb会把数据和索引都一起缓存起来, 该值应该相对大一些.
六. delete与optimize
如果一个表经常有insert与delete操作,应该要定期进行optimize操作,可以有效的回收空间和整理碎片.
七. 关于锁
myisam只支持表锁; innodb支持行级锁,它是通过在索引上加锁来实现的,因此只有在用到索引来检索数据时才用到行锁,否则仍使用表锁.
八. 索引
myisam支持的索引类型包括: 普通索引(index), primary key(主键), 唯一性主键(unique key), 全文索引(full text).
innodb有两种索引: B+树索引, hash索引.innodb为索引组织表.