| 网管联盟 | 网管论坛 | 网管u家 | 网管博客 | 网管软件 | 网管求职 | 小游戏 | 网管搜索 | 网管原创 | 网管聚合 | 网管读摘 | 网管焦点 | 世界素材 | 会员投稿 | 会员中心 |
![]() |
| Windows Linux Cisco 网络技术 数据库 黑客攻防 DotNet Java PHP 认证 新闻资讯 服务器 存储资讯 网络设备 网管学堂 技术专题 焦点 网吧频道 |
2、 MySQL 如何使用内存 网管网www.bitscn.com
以下展示了 mysqld 服务器使用内存的几种方法。可适用的是,和使用内存相关的系统变量名已经给出了:
- 一个堆栈(默认是64KB,thread_stack 变量)。
- 一个连接缓冲(net_buffer_length变量)。
- 一个结果缓冲(net_buffer_length 变量)。
连接缓冲和结果缓冲可根据需要动态扩大到max_allowed_packet。一个查询正在执行时,当前查询语句的一份拷贝也需要为之分配内存。
变量)。
网管联盟bitsCN@com
3.23.2之前有一个问题是,当一个内部的内存表大小超过 tmp_table_size 后,就会产生一个 The table tbl_name is full 错误。在MySQL 3.23.2后,这会自动处理,在必须的时候把内存表转换成基于磁盘存储的MyISAM 表。想要在旧版本的MySQL也能正常运行,可以给 mysqld 设置 tmp_table_size选项以增加临时表大小,或者在客户端程序中设置 SQL_BIG_TABLES 选项。在MySQL3.20中,临时表的大小最多为record_buffer*16;如果你使用这个版本,就必须加大record_buffer的值。可以在使用--big-tables 选项启动 mysqld来允许将临时表保存在磁盘中。不过这会影响很多查询编译。
网管u家u.bitsCN.com
ps 网管联盟bitsCN_com
和其他系统程序都可以报告 mysqld 使用了大量内存。这个可能是因为在不同内存地址上的线程堆栈导致。例如,Solaris下的ps 会把堆栈中未使用的内存也认为是已使用了。可以通过 swap -s命令来检查可用的交换内存。我们已经用好几个内存泄漏监测器来测试了mysqld(包括商业的和开源的),应该不会存在内存泄漏。
网管u家u.bitsCN.com
|
0
|
评论加载中…