读一读

特大的字符串类型。BOLB是二进制型的。如果BOLB和TEXT太大,InnoDB会使用“外部存储区域进行存储,此时每个值在行内需要1-4个字节存储一个指针,然后在外部存储区域存储实际的值。TEXT类型有字符集和排序规则,而BLOB没有。排序方式是对每个列的前max_sort_length字节排序,而不是全部,与其他的数据类型不一样。


如果EXPLAIN执行计划的Extra列包含"Using temporary",则说明这个查询使用了隐式临时表。消耗性能。


二进制字符串,同CHAR和VARCHAR一样。不同的是BINARY后面填充的是/0,读取的时候也不截断。二进制字符串是大小写敏感的。存储的是字节码而不是字符。比较也相对较快,根据字节的数值进行比较。


CHAR是定长字符串类型,不满长度的就会在字符串后面填充空格。读取的时候末尾的空格就会被截断。

VARCHAR是变长字符串,末尾会保存字符串的长度。VARCHAR(LENGTH),末尾保存长度的字节数有LENGTH确定,反正能够保存的下长度这个数。

1.PNG


总体来说,我们认为解决性能问题的方法,首先是要认清问题,然后选择合适的技术来解答这些问题。如果你想尝试提升服务器的总体性能,那么一个比较好的起点是将所有的查询记录到日志中(慢查询设置为0s),然后利用pt-query-digest工具生成系统级别的剖析报告。如果要追查某些性能低下的查询,记录和剖析的方法也会有帮助,寻找那些消耗时间最多的,奇奇怪怪的查询中。


性能剖析是测量和分析时间花费在哪里的主要方法。一般有两个步骤:测量任务所花费的时间,然后对结果进行统计和排序,将重要的任务排到面前。工作方式一般都是启用计时器计算任务开始到结束的响应时间。这里的响应时间,是任务执行时间,有必要的要考虑等待时间。Percona Toolkit的pt-query-digest一个好的mysql的剖析工具,查询日志分析工具。


sysbench,最起码的要会这个基准测试工具。

sysbench可以执行多种类型的基准测试,它不仅设计用来测试数据库的性能,也可以测试运行数据库的服务器的性能。可以进行CPU,文件I/O,OLTP。还能测试数据库外的,例如内存,线程,互斥锁,顺序写等。


ALTER TABLE 需要删除外键的表 DROP FOREIGN KEY fk_name;


ALTER TABLE 要添加外键的表 ADD CONSTRAINT fk_name FOREIGN KEY(外键字段) REFERENCES 关联表(字段)


3.PNG