10bet网址
MySQL Enterprise Monitor 8.0手册
相关的文档10bet官方网站 本手册下载
PDF (Ltr)- 6.1 mb
PDF (A4)- 6.1 mb


19.8性能顾问

介绍性能顾问。

二进制日志使用率超过磁盘缓存内存限制

当二进制日志使用量超过二进制日志缓存内存限制时,说明磁盘操作过多。为了获得最佳性能,在二进制日志中移动的事务应该包含在二进制日志缓存中。

有关二进制日志和二进制日志缓存的更多信息,请参见二进制日志

默认频率00:05:00

默认启用自动关闭没有

数据库文件I/O全局摘要

控件中按等待类型全局公开文件I/O的当前摘要sys.x io_global_by_wait_by_latency美元视图。

该建议器没有可配置的阈值,用于填充图形和表数据库文件I / O报告。如果Advisor被禁用,报告将继续显示历史数据,但不显示任何新数据。

检测到磁盘临时表使用过量

如果构建临时表所需的空间超过其中之一tmp_table_sizemax_heap_table_size, MySQL在服务器的tmpdir目录中。另外,具有TEXT或BLOB列的表会自动放在磁盘上。

出于性能考虑,最好在内存中创建大多数临时表,而在磁盘上创建超大的临时表。

默认频率00:05:00

默认启用自动关闭没有

锁定进程数量过多

根据环境、存储引擎和其他因素的不同,一个进程可能正在使用或访问另一个进程所需的资源(例如表或行),而第二个进程在第一个进程释放该资源之前无法继续。在这种情况下,第二个进程处于锁定状态,直到资源被释放。如果许多进程处于锁定状态,这可能是与资源争用相关的严重问题的迹象,或者长时间运行的会话在应该释放当前持有的锁时却没有释放。

默认频率00:01:00

默认启用自动关闭没有

长时间运行的进程数量过多

大多数应用程序和数据库都被设计为非常快速地执行查询。如果许多查询需要很长时间来执行(超过几秒钟),这可能是出现问题的迹象。在这种情况下,可能需要调优或重写查询,或添加索引以提高性能。在其他情况下,数据库模式可能必须重新设计。

默认频率00:01:00

默认启用自动关闭没有

锁定的长时间运行进程数量过多

大多数应用程序和数据库都被设计为非常快速地执行查询,并避免资源争用,即一个查询等待另一个查询释放某个共享资源上的锁。如果许多查询被锁定并且执行时间很长(超过几秒钟),这可能是性能问题和资源争用的迹象。在这种情况下,可能需要调优或重写查询,或添加索引以提高性能。在其他情况下,数据库模式可能必须重新设计。

默认频率00:01:00

默认启用自动关闭没有

刷新时间设置为非零值

如果flush_time设置为非零值,则每隔flush_time秒关闭所有表,以释放资源并将未刷新的数据同步到磁盘。如果您的系统是不可靠的,并且倾向于经常锁定或重新启动,那么以这种方式强制取消表更改会降低性能,但可以减少表损坏或数据丢失的机会。我们建议只在Windows或资源最少的系统上使用此选项。

默认频率06:00:00

默认启用自动关闭没有

索引没有被有效使用

目标服务器似乎没有有效地使用索引。的值Handler_read_rnd_next而且Handler_read_rnd,它们反映了通过全表扫描读取的行数,与表示索引访问的Handler变量(例如Handler_read_keyHandler_read_next,等等。您应该检查表和查询,以便正确使用索引。

默认频率00:05:00

默认启用自动关闭没有

InnoDB缓冲池写入可能成为性能瓶颈

为了获得最佳性能,InnoDB不应该在将页面写入InnoDB缓冲池之前等待。

默认频率00:05:00

默认启用自动关闭是的

InnoDB刷新方法可能不是最佳的

不同的值innodb_flush_method对InnoDB性能有显著影响。在某些版本的GNU/Linux和Unix中,通过调用fsync ()(InnoDB默认使用)或其他类似的方法,可能会慢得惊人。如果对数据库写性能不满意,可以尝试设置innodb_flush_method参数O_DIRECTO_DSYNC

默认频率06:00:00

默认启用自动关闭没有

InnoDB日志缓冲区在每次事务处理后都被刷新到磁盘

默认情况下,InnoDB的日志缓冲区在每次事务提交时都被写到日志文件中,并对日志文件执行一个刷新到磁盘的操作,这强制了ACID的遵从性。在崩溃的情况下,如果您可以承受损失一秒钟的事务,您可以通过设置来获得更好的性能innodb_flush_log_at_trx_commit变成0或2。如果将该值设置为2,则只有操作系统崩溃或电源中断才能删除事务的最后一秒。这在从服务器上非常有用,如果需要,一秒钟的数据丢失可以从主服务器上恢复。

默认频率06:00:00

默认启用自动关闭是的

InnoDB没有使用最新的文件格式

请注意

这个建议器不能对MySQL 8或更高版本进行计算。

InnoDB支持压缩表(压缩行格式)和更有效的BLOB处理(动态行格式),但这两个特性都需要支持最新的文件格式(innodb_file_format =梭鱼).这些特性还需要使用ROW_FORMAT =(动态|压缩)创建表而且ALTER TABLE语句。

有关更多信息,请参见定义表的行格式

默认频率12:00:00

默认启用自动关闭没有

InnoDB日志等待可能是性能瓶颈

为了获得最佳性能,InnoDB不应该在将DML活动写入InnoDB日志缓冲区之前等待。

默认频率00:05:00

默认启用自动关闭没有

MyISAM并发插入设置可能不是最佳的

MyISAM使用表级锁定,当有许多并发时,这会对性能产生不利影响插入而且选择语句,因为插入年代屏蔽所有选择年代到插入就完成了。但是,MyISAM可以配置为允许插入而且选择语句在某些情况下并发运行。

  • 如果concurrent_insert设置为1,默认值,还是汽车在MySQL 5.5.3或更高版本,MySQL允许插入而且选择语句并发地运行在数据文件中间没有空闲块的MyISAM表上。

  • 如果concurrent_insert设置为2,在MySQL 5.0.6及以上版本可用,或总是从MySQL 5.5.3或更高版本开始,MySQL允许对所有MyISAM表进行并发插入,即使是那些有漏洞的表。对于有孔的表,如果表正在被另一个线程使用,则在表的末尾插入新行。否则,MySQL将获得一个普通的写锁并将行插入孔中。

    设置concurrent_insert到2允许表增长,即使中间有洞。这对于删除大块数据但继续发出大量数据的应用程序来说是不利的选择,从而有效预防插入S填洞。

默认频率06:00:00

默认启用自动关闭没有

准备好的报表没有关闭

在多次执行类似语句的应用程序中,预处理语句可以提高性能,主要是因为查询只解析一次。预处理语句还可以减少网络流量,因为只需为每次执行发送参数的数据,而不必发送整个语句。

然而,准备好的语句需要花费时间准备和消耗MySQL服务器中的内存,直到它们被关闭。

默认频率00:05:00

默认启用自动关闭没有

准备好的语句没有被有效地使用

在多次执行类似语句的应用程序中,预处理语句可以提高性能,主要是因为查询只解析一次。预处理语句还可以减少网络流量,因为只需为每次执行发送参数的数据,而不必发送整个语句。

然而,准备语句需要花费时间准备和消耗MySQL服务器中的内存,直到它们被关闭,所以正确使用它们是很重要的。如果只执行一条语句几次,那么创建准备好的语句的开销可能就不值得了。

默认频率00:05:00

默认启用自动关闭没有

查询缓存过度碎片化

请注意

这个建议器不能对MySQL 8或更高版本进行计算。

启用查询缓存可以显著提高性能选择跨多个连接执行相同的查询,返回相同的结果集。但是,如果用于查询缓存的内存过度碎片化,会对性能产生不利影响,导致服务器在从缓存中删除条目或在空闲块列表中搜索用于向缓存中插入新查询的块时暂停。

默认频率00:05:00

默认启用自动关闭没有

表锁争用过度

如果必须等待锁的表操作的百分比高于锁的总数量,则可能会降低性能。当使用表级锁定存储引擎(如MyISAM)而不是行级锁定存储引擎时,可能会发生这种情况。

默认频率00:05:00

默认启用自动关闭没有

线程缓存未启用

每个到MySQL数据库服务器的连接都在自己的线程中运行。线程的创建需要时间,所以服务器可以将线程保存在线程缓存中,稍后在新的连接中使用它,而不是在连接关闭时杀死线程。

默认频率00:05:00

默认启用自动关闭没有

线程池失速限制过低

thread_pool_stall_limit变量使线程池能够处理长时间运行的语句。如果允许一个长时间运行的语句阻塞一个线程组,那么分配给该线程组的所有其他连接都将被阻塞,并且在长时间运行的语句完成之前无法开始执行。在最坏的情况下,这可能需要几个小时甚至几天的时间。

的价值thread_pool_stall_limit应选择这样的参数,即执行时间大于其值的语句将被视为暂停。停滞语句会产生大量额外的开销,因为它们涉及到额外的上下文切换,在某些情况下甚至是额外的线程创建。另一方面,设置thread_pool_stall_limit参数设置过高意味着长时间运行的语句会阻塞一些短时间运行的语句。较短的等待值允许线程更快地启动。短的值也更好地避免死锁情况。长等待值对于包含长时间运行语句的工作负载很有用,可以避免在执行当前语句时启动太多新语句。

默认频率00:05:00

默认启用自动关闭没有

未启用线程池

从MySQL 5.5.16开始,MySQL的商业发行版包含了一个线程池插件,该插件提供了一个可选的线程处理模型,旨在减少开销和提高性能。它实现了一个线程池,通过有效地管理大量客户机连接的语句执行线程来提高服务器性能。

对于具有许多并发活动连接的服务器(通常超过计算机内的cpu数量),启用Thread Pool插件可以提高性能。这使服务器中积极执行的线程数量更低,通常会减少对锁和资源的争用,同时仍然保持来自应用程序的非常高的连接计数。

默认频率00:05:00

默认启用自动关闭没有

运行的并发查询太多

活动查询太多表明服务器上有严重的负载,可能是锁争用或未优化SQL查询的迹象。

默认频率00:05:00

默认启用自动关闭没有