• 全部
  • 问答

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

流子 服务器负责人  2009-06-21 03:46:35
如何查询mysql里某张表所有记录所占内存?我想比较一下innodb表和myisam表所占用内存大小,谢谢
...全文
262 点赞 收藏 5
写回复
5 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
懒得去死 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中保留上个查询的结果缓冲。
平时,表不是会被加载到内存中去的。

回复
发帖
MySQL
创建于2007-09-28

5.4w+

社区成员

MySQL相关内容讨论专区
申请成为版主
帖子事件
创建了帖子
2009-06-21 03:46
社区公告
暂无公告