如何查询mysql里某张表所有记录所占内存?我想比较一下innodb表和myisam表所占用内存大小

流子
游戏开发领域优质创作者
博客专家认证
2009-06-21 03:46:35
如何查询mysql里某张表所有记录所占内存?我想比较一下innodb表和myisam表所占用内存大小,谢谢
...全文
472 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
懒得去死 2009-06-24
  • 打赏
  • 举报
回复
MYISAM直接看磁盘上MYI文件的大小就直达占多大内存了,INNODB从数据字典里面查!
ACMAIN_CHM 2009-06-21
  • 打赏
  • 举报
回复

show table status;
然后你可以查看 Data_length 得到数据长度,但只是参考,并不精确。 MyISAM的数据文件就在datadir/dbname中的 tablename.myd, *.myi, *.frm, 但innodb 的都存于一个ibdata文件中。

mysql> show table status;                                                            
+------+--------+---------+------------+--------+----------------+-------------+-----
| Name | Engine | Version | Row_format | Rows | Avg_row_length | Data_length | Max_
+------+--------+---------+------------+--------+----------------+-------------+-----
| t1 | MyISAM | 10 | Fixed | 100000 | 9 | 900000 | 2533
| t2 | InnoDB | 10 | Compact | 11 | 1489 | 16384 |
| ta | InnoDB | 10 | Compact | 3 | 5461 | 16384 |
| tb | InnoDB | 10 | Compact | 200 | 81 | 16384 |
+------+--------+---------+------------+--------+----------------+-------------+-----
4 rows in set (0.16 sec)

mysql>
流子 2009-06-21
  • 打赏
  • 举报
回复
哦,说错了,是指查询记录所占用的磁盘空间大小
ACMAIN_CHM 2009-06-21
  • 打赏
  • 举报
回复

http://dev.mysql.com/doc/refman/5.1/zh/database-administration.html#query-cache

5.13. MySQL查询高速缓冲
5.13.1. 查询高速缓冲如何工作
5.13.2. 查询高速缓冲SELECT选项
5.13.3. 查询高速缓冲配置
5.13.4. 查询高速缓冲状态和维护
查询缓存存储SELECT查询的文本以及发送给客户端的相应结果。如果随后收到一个相同的查询,服务器从查询缓存中重新得到查询结果,而不再需要解析和执行查询。


http://dev.mysql.com/doc/refman/5.1/zh/optimization.html#memory-use
7.5.5. MySQL如何使用内存
下面的列表中列出了mysqld服务器使用内存的一些方法。在适用的地方,给出了内存相关的系统变量名:
ACMAIN_CHM 2009-06-21
  • 打赏
  • 举报
回复

[Quote]所占内存? [/Quote]
MySQL只会当SQL涉及相关表时,才把表的数据调入内存,并会根据LRU算法,在CACHE中保留上个查询的结果缓冲。
平时,表不是会被加载到内存中去的。

56,876

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧