分区表是一个独立的逻辑表,是底层多个物理字表组成。有以下的优点和用途场景。1.表非常大以至于无法全部都放在内存中,或者只在表的最后部分有热点数据,其他均是历史数据。分区表的数据更容易维护。分区表的数据可以分布在不同的物理设备上,从而高效的利用多个硬件设备。
分区表本身也有一些限制:1.一个表最多只能有1024个分区。2.如果分区字段中有主键或者唯一索引的列,那么所有主键列和唯一索引列都必须包含进来。3.分区表中无法使用外键约束。
视图本身是一个虚拟表,不存放任何数据。在使用SQL预计访问视图的时候,它返回的数据是MySQL从其他表中生成的。视图和表是在同一个命名空间,MySQL在很多地方对于视图和表是同样对待的。不过视图和表也有不同,例如不能对视图创建触发器,也不能使用DROP TABLE命令珊瑚视图。
InnoDB是目前MySQL中唯一支持外键的内置存储引擎。如果想确保两个相关表始终有一致的数据,那么使用外键比在应用程序中检查一致性的性能要高得多,此外外键在相关数据的删除和更新上,也很高效。
对每一个表的每一个事件,最多只能定义一个触发器,换句话说,不能在AFTER INSERT上定义两个触发器。MySQL只支持“基于行的触发”--也就是,触发器始终是针对一条记录的。而不是针对整个SQL语句。
MySQL查询缓存保存查询返回的完整结果。当查询命中该缓存,MySQL会立刻返回结果,跳过了解析、优化和执行阶段。如果查询语句中包含任何的不确定函数,那么查询缓存中是不可能找到缓存结果的。查询缓存任然可能给系统带来性能提升。对于InnoDB用户来说,事务的一些特性会限制查询缓存的使用。
春水初生,春林初盛,春风十里,不如你。——冯唐《三十六大》