mysql 批量处理数据的技术,内存的使用问题

mysql 批量处理数据的技术,内存的使用问题,第1张

MySQL 自身内存规划

说到 MySQL 自身的内存规划,最先想到的就是 MySQL 中各种 buffer 的大小,innodb buffer pool 就是最鹤立鸡群的那个。innodb_buffer_pool_size 参数的大小究竟如何设置,才能保证 MySQL 的性能呢?在官网文档中可以找到这个参数的一些描述:

A larger buffer pool requires less disk I/O to access the same table data more than once On a dedicated database server, you might set the buffer pool size to 80% of the machine's physical memory size

意思是在专用数据库服务器上,可以将 innodb_buffer_pool_size 设置为计算机物理内存大小的 80%。在许许多多前辈的的经验中了解到,此参数的值设置为物理内存的 50%~80% 颇为合理。

举个栗子:

innodb buffer pool 分配 76G,每个连接线程最大可用 160M,最大有 3000 连接数,最大可能使用内存总量 545G,但是这台实例所在服务器的物理内存仅仅有 97G,远超物理内存总量。结果可想而知,这个实例在运行中经常被 oom-killer 杀死,想必原因之一即是因为一开始 MySQL 自身的内存规划欠妥。

innodb buffer pool 缓存数据的作用相信大家都懂,比如这个 case 中,可以发现该实例为写密集,读请求很少,innodb buffer 对性能改善作用不大,80% 的内存没必要,完全可以降低到物理内存的50%。

服务器内存占用过高的解决方法:\x0d\1,首先通过任务管理器进行进程排序,查找占用内存较大的程序进程。一般占用内存较大的进程有W3WP、sqlserver、mysqld-ntexe;\x0d\2, 站点进程w3wp 可以在cmd命令行中通过 iisapp 命令来对应是那个网站占用内存较大。可以通过设置回收时间、内存最大使用值或共用进程池来减少内存的占用,但是如果要保证网站的访问质量,还是建议升级至更高型号来解决;\x0d\3,数据库 sql server 也可以通过数据库的企业管理器来设置最大内存占用,但是如果网站程序必须要占用较大内存的话,设置后会发生页面报错、打不开等问题;\x0d\4,MYSQL本身会占用较大虚拟内存,如果不使用mysql数据库的话,可以将其停止。

服务器内存占用过高的解决方法:
1,首先通过任务管理器进行进程排序,查找占用内存较大的程序进程。一般占用内存较大的进程有W3WP、sqlserver、mysqld-ntexe;
2, 站点进程w3wp 可以在cmd命令行中通过 iisapp 命令来对应是那个网站占用内存较大。可以通过设置回收时间、内存最大使用值或共用进程池来减少内存的占用,但是如果要保证网站的访问质量,还是建议升级至更高型号来解决;
3,数据库 sql server 也可以通过数据库的企业管理器来设置最大内存占用,但是如果网站程序必须要占用较大内存的话,设置后会发生页面报错、打不开等问题;
4,MYSQL本身会占用较大虚拟内存,如果不使用mysql数据库的话,可以将其停止。

您好,MySQL数据库和本地数据库都需要占用内存,但是具体哪个占用更多内存,需要看具体情况。
MySQL数据库是一种关系型数据库管理系统,它需要在服务器上运行,通过网络连接来提供服务。在使用MySQL时,需要考虑到服务器的内存大小,因为MySQL需要将数据缓存在内存中,以提高查询效率。因此,如果服务器内存较小,MySQL可能会占用更多的内存。
本地数据库是指运行在本地计算机上的数据库,可能会使用一些轻量级的数据库管理系统,例如SQLite等。由于本地数据库通常只供本机使用,所以它们通常不需要太多的内存。但是,如果数据量非常大,或者需要进行复杂的查询 *** 作,本地数据库可能会占用更多的内存。
总之,MySQL和本地数据库都需要占用内存,具体哪个占用更多内存,需要根据具体情况进行评估。如果需要处理大量数据或进行复杂的查询 *** 作,可能需要更多的内存来支持。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/13467288.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-08-12
下一篇 2023-08-12

发表评论

登录后才能评论

评论列表(0条)

保存