高性能的MySQL(8)优化服务器配置一内存

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
云数据库 RDS PostgreSQL,高可用系列 2核4GB
简介:

配置MySQL服务器离不开配置文件,接下来就开始这一部分的内容。

首先一定要清楚配置文件的位置,如果不知道可以尝试下面的操作:

1
2
3
4
/usr/local/mysql/bin/mysqld   --verbose --help |  grep  -A 1  'Default options'
#结果如下
Default options are  read  from the following files  in  the given order:
/etc/my .cnf  /etc/mysql/my .cnf  /usr/local/mysql/etc/my .cnf ~/.my.cnf

有时候可以使用show global status 的输出来看状态,有的时候也需要看随着时间的变化而变化的状态值,可以使用命令:

1
/usr/local/mysql/bin/mysqladmin  extended-status -ri60 -uroot -p123456

接下来看看内存的配置使用了。

MySQL可以使用的内存会受到操作系统位数的限制,MySQL保持一个连接(线程)只需要少量的内存,同时也需要为高峰时期执行大量查询预留好足够的内存。
下面是我们认为比较重要的缓存:

a、InnoDB缓冲池

b、InnoDB日志文件和MyISAM数据的操作系统缓存

c、MyISAM键缓存

d、查询缓存

InnoDB缓冲池并不仅仅缓存索引,还会缓存行的数据,自适应哈希索引,插入缓冲,锁,以及其他内部数据结构。很大的缓冲池,预热和关闭都很话费很长时间,重启服务器也会话费很长的时间,尤其是磁盘很慢的时候,可以使用Percona Server的快速预热功能,如果不能使用可以在重启时立刻进行全表扫描或者索引扫描,把索引载入缓冲池。可以通过使用init_file设置来实现这个功能。

如果大部分表都是MySIAM表,就应该为键缓存分配比较多的内存。最重要的配置是key_buffer_size,在决定键缓存需要分配多少内存之前,需要先了解MySIAM索引实际占用多少空间。查询INFORMATION_SCHEM表的INDEX_LENGTH字段,把他们的值相加就可以得到索引占用空间。如下:

213441848.png

linux下也可以使用如下命令:

1
du  -sch ` find  /path/to/mysql/data/directory/  -name  "*.MYI" `

默认情况下,MySIAM将所有索引都缓存在默认的键缓存中,但也可以创建多个命名的键,可以在配置文件中添加如下

key_buffer_1.key_buffer_size=1G

key_buffer_2.key_buffer_size=1G

可以使用cache index 命令来将表映射到对应的缓冲区,比如下面的语句,使用key_buffer_1来缓存t1和t2表的索引

1
cache  index  t1,t2  in  key_buffer_1;

也可以把表的索引预载入缓存中,如下命令:

1
load  index  into  cache t1,t2;

即使全部是InnoDB表,没有MySIAM表,依然需要将key_buffer_size设置为一个较小的值,因为服务器有时会在内部使用MySIAM,例如GROUP BY语句可能会使用MySIAM作为临时表。

线程缓存保存那些当前没有连接但是准备为后面的连接服务的线程,thread_cache_size变量指定了MySQL可以保持在缓存中的线程数。

一个好的办法是观察Threads_connected变量并且尝试thread_cache_size,没有必要设置的非常大。

InnoDB有自己的表缓存,可以称为数据字典,当InnoDB打开一个表就增加了一个对应的对象到数据字典,当表关闭的时候也不会从数据字典移除。

另一个性能问题是第一次打开表会计算统计信息,这需要很多的I/O操作,相比MySIAM,InnoDB没有将统计信息持久化,而是在每次打开时重新计算,包括改变表的内容或者查询INFORMATION_SCHEMA表也会重新计算统计信息,如果有很多表,服务器可能会花费数个小时来启动并完成预热。MySQL5.6以后,可以通过innodb_analyze_is_persistent选项来持久化存储统计信息到磁盘上。

可以关闭innodb_stats_on_metadata选项来避免耗时的表统计信息的刷新。



















本文转自shayang8851CTO博客,原文链接:http://blog.51cto.com/janephp/1320197,如需转载请自行联系原作者

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
相关文章
|
3月前
|
SQL 存储 关系型数据库
MySQL内存引擎:Memory存储引擎的适用场景
MySQL Memory存储引擎将数据存储在内存中,提供极速读写性能,适用于会话存储、临时数据处理、高速缓存和实时统计等场景。但其数据在服务器重启后会丢失,不适合持久化存储、大容量数据及高并发写入场景。本文深入解析其特性、原理、适用场景与限制,并提供性能优化技巧及替代方案比较,助你合理利用这一“内存闪电”。
|
4月前
|
存储 弹性计算 安全
阿里云轻量服务器通用型、CPU优化型、多公网IP型、国际型、容量型不同实例区别与选择参考
阿里云轻量应用服务器实例类型分为通用型、CPU优化型、多公网IP型、国际型、容量型,不同规格族的适用场景和特点不同,收费标准也不一样。本文为大家介绍轻量应用服务器通用型、多公网IP型、容量型有何区别?以及选择参考。
|
3月前
|
存储 缓存 监控
MySQL服务器配置优化:my.cnf参数调优指南
本文深入解析了MySQL核心配置参数及性能优化技巧,涵盖内存结构、调优原则、存储引擎优化、查询性能优化等内容,通过实战案例帮助读者构建高性能MySQL服务器配置,解决常见的性能瓶颈问题。
|
7月前
|
存储 弹性计算 缓存
阿里云服务器ECS实例选型与性能监控指南:从场景匹配到优化参考
随着云服务器的普及应用,越来越多的企业和个人用户选择将业务迁移到云端,以享受其带来的灵活性、可扩展性和成本效益。阿里云服务器(Elastic Compute Service,简称ECS)以其丰富的实例规格、卓越的性能和稳定的运行环境,赢得了广大用户的信赖。然而,对于很多初次接触云服务器产品的新手用户来说,面对阿里云多达几十种的云服务器实例规格,往往感到无从下手,不知道如何选择最适合自己业务需求的实例规格。本文旨在通过详细解析阿里云ECS实例规格的选择策略,并介绍如何有效监控云服务器性能,确保业务的高效运行。
434 63
|
2月前
|
存储 缓存 安全
阿里云轻量应用服务器实例:通用型、多公网IP型、CPU优化、国际及容量型区别对比
阿里云轻量服务器分通用型、CPU优化型、多公网IP型、国际型和容量型。通用型适合网站与应用;CPU优化型提供稳定高性能计算;多公网IP型支持2-3个IP,适用于账号管理;国际型覆盖海外地域,助力出海业务;容量型提供大存储,适配网盘与实训场景。
227 1
|
3月前
|
存储 缓存 数据挖掘
阿里云轻量应用服务器“CPU优化型”配置介绍、费用价格说明
阿里云轻量应用服务器推出CPU优化型,提供更强计算性能,2核4GB起,最高16核64GB,全系支持200Mbps带宽。适用于企业级应用、数据库、游戏服务器等高算力场景,保障稳定高效运行。
402 1
|
5月前
|
安全
基于Reactor模式的高性能服务器之Acceptor组件(处理连接)
本节介绍了对底层 Socket 进行封装的设计与实现,通过 `Socket` 类隐藏系统调用细节,提供简洁、安全、可读性强的接口。重点包括 `Socket` 类的核心作用(管理 `sockfd_`)、成员函数的功能(如绑定地址、监听、接受连接等),以及 `Acceptor` 组件的职责:监听连接、接收新客户端连接并分发给上层处理。同时说明了 `Acceptor` 与 `EventLoop` 和 `TcpServer` 的协作关系,并展示了其成员变量和关键函数的工作机制。
123 2
|
4月前
|
缓存 监控 前端开发
详述uniapp项目部署于Nginx服务器的配置优化方法。
综上所述,uniapp项目部署于Nginx的优化方法多种多样,应根据实际情况灵活地采取合适的策略。配置后持续监控和调试,适时调整配置以保持最佳性能,并确保随着应用需求和访问模式的变化,服务器配置得到适当的更新和优化。
217 0
|
8月前
|
关系型数据库 MySQL Linux
在Linux环境下备份Docker中的MySQL数据并传输到其他服务器以实现数据级别的容灾
以上就是在Linux环境下备份Docker中的MySQL数据并传输到其他服务器以实现数据级别的容灾的步骤。这个过程就像是一场接力赛,数据从MySQL数据库中接力棒一样传递到备份文件,再从备份文件传递到其他服务器,最后再传递回MySQL数据库。这样,即使在灾难发生时,我们也可以快速恢复数据,保证业务的正常运行。
368 28
|
8月前
|
缓存 PHP 数据库
WordPress网站服务器性能优化方法,站长必备。
最后,当你将这些方法组合起来并实施时,您将发现你的WordPress网站性能有了显著的提高。别忘了,这不是一次性的任务,要定期执行,保持你的车(网站)始终在轨道上飞驰。
269 21

热门文章

最新文章

推荐镜像

更多