mysql学习总结2(高性能MySQL笔记)

时间:2021-08-30 19:41:12

7 mysql高级特性

7.1 分区表

分区表的原理和作用

分区表的一些限制

分区表的类型

partition by range与partition by range column

使用分区表的技巧,怎么提高查询效率

7.2 外键的一些使用

作为外键的主表必须是唯一且非空,

外键能够保持数据的一致性和完整性

7.3 事件与存储过程

点击打开链接

创建存储过程

create procedure del_data(IN `date_inter` int)
begin
    delete from t_xxx where date < date_sub(curdate(),interval 7 day);
    delete from t_log where date < date_sub(curdate(),interval date_inter day);
end
创建事件

create event del_event  
on schedule
EVERY 1 day
STARTS '2014-01-01 03:00:00'
ON COMPLETION  PRESERVE ENABLE  
do  call del_data(30)

关闭事件任务: alter event del_event ON COMPLETION PRESERVE DISABLE;
开户事件任务: alter event del_event ON COMPLETION PRESERVE ENABLE;

7.4 触发器

点击打开链接

7.5 视图

视图在权限管理中的作用

merge、template、default三种类型的视图

7.6 游标的使用

有时,数据在服务器内部遍历行,处理完后,只需要返回少量的数据给客户端,这时,使用游标能够提高效率

7.7 绑定变量

客户端绑定变量,能够减少执行计划的解析次数,提高传输效率

服务器端的绑定变量,可以使存储过程更加灵活

绑定变量是会话级别的,会话关闭则失效,绑定变量的sql由于变量的变化,导致无法使用缓存,

7.8 全文索引

7.9 分布式事务(XA)

由于存储引擎是独立部署的(包括日志),所以mysql单库不同存储引擎之间的事务提交也是分布式的。

mysql可以是一个分布式事务的参与者,也可以作为协调者协调mysql的分布式事务。

XA只是一种在不同服务之间同步数据的一种方法,由于其事务特性,使得有时使用XA的代价非常高,有时可以使用其他方法替代XA。

7.10 查询缓存

查询缓存对应用程序是完全透明的。

mysql首先查看sql语句中没有不确定的东西(CURRENT_DAY,NOW(),绑定变量,CONNECTION_ID等),如果有,则不缓存,也不从缓存中查找,如果没有,则针对这个sql生成hash值,然后以这个hash为key去缓存中查找。

查询缓存开启后,对读写操作的影响。

innodb中,如果某个事务对表进行了加锁,那么,在这个事务提交前,所有与这个表相关的缓存都将失效,直到事务提交后,才能继续更新并使用缓存。

mysql查询缓存使用内存的方式,query_cache_min_res_unit参数的设置

在服务器开启时,mysql会根据配置文件向操作系统malloc()一块内存,这块内存的一小部分(大概40KB)的区间将作为维护缓存的一些记录所用,剩下的其他部分将作为真正能用的空间。任何查询想缓存申请空间时,都会首先申请一块query_cache_min_res_unit大小的空间,然后将数据放入,如果空间有剩余,则将剩余空间释放掉,如果不够,则继续向缓存申请一块query_cache_min_res_unit大小的空间,直至满足要求。

查询缓存配置:query_cache_type、query_cache_size、query_cache_min_res_unit、query_cache_limit、query_cache_wlock_invalidate

内存碎片与缓存命中率跟配置的关系

innodb与查询缓存

通用缓存的一些优化方式



8 优化服务器设置






9 操作系统与硬件优化