千金良方:MySQL性能优化金字塔法则
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

7.1 sys系统库使用基础环境

在使用sys系统库之前,你需要确保自己的数据库环境满足如下条件。

● sys系统库支持MySQL 5.6或更高版本,不支持MySQL 5.5.x及以下版本。

● 因为sys系统库提供了一些代替直接访问performance_schema的视图,所以必须启用performance_schema(将performance_schema系统参数设置为ON),sys系统库的大部分功能才能正常使用。

● 要完全访问sys系统库,用户必须具有以下权限。

■ 对所有sys表和视图具有SELECT权限。

■ 对所有sys存储过程和函数具有EXECUTE权限。

■ 对sys_config表具有INSERT、UPDATE权限。

■ 对某些特定的sys系统库存储过程和函数需要额外权限,如ps_setup_save()存储过程,需要与临时表相关的权限。

● 还要有与被sys系统库执行访问的对象相关的权限。

■ 任何被sys系统库访问的performance_schema表都需要有SELECT权限,如果要使用sys系统库对performance_schema相关表执行更新,则需要有performance_schema相关表的UPDATE权限。

■ INFORMATION_SCHEMA.INNODB_BUFFER_PAGE表的PROCESS权限。

● 如果要充分使用sys系统库的功能,则必须启用某些performance_schema的instruments和consumers。

■ 所有的wait instruments。

■ 所有的stage instruments。

■ 所有的statement instruments。

■ 对于所启用的类型事件的instruments,还需要启用对应类型的consumers(xxx_current和xxx_history_long)。要了解某存储过程具体做了什么事情,可以通过show create procedure procedure_name;语句查看。

你可以使用sys系统库本身来启用所有需要的instruments和consumers(而不需要手动使用DML语句来启用)。

● 启用所有的wait instruments:CALL sys.ps_setup_enable_instrument('wait');。

● 启用所有的stage instruments:CALL sys.ps_setup_enable_instrument('stage');。

● 启用所有的statement instruments:CALL sys.ps_setup_enable_instrument('statement');。

● 启用所有事件类型的current表:CALL sys.ps_setup_enable_consumer('current');。

● 启用所有事件类型的history_long表:CALL sys.ps_setup_enable_consumer('history_long');。

注意:performance_schema的默认配置就可以满足sys系统库的大部分数据收集功能。启用上面所提及的所有instruments和consumers会对性能产生一定的影响,因此最好仅启用所需的配置。如果启用了一些默认配置之外的配置,则可以使用存储过程CALL sys.ps_setup_reset_to_default(TRUE);快速恢复到performance_schema的默认配置。

提示:对于以上繁杂的权限要求,通常创建一个具有管理员权限的账号即可,如果你有明确的需求,则另当别论。但sys系统库通常都是提供给专业的DBA人员排查一些特定问题使用的,其下所涉及的各项查询或多或少都会对性能有一定的影响(主要体现在performance_schema功能实现的性能开销上),在不明确需求的情况下,不建议开放这些功能来作为常规的监控手段使用。