PHP中的一个相当大的数组MySQL结果集所占用的内存?

时间:2015-06-11 08:57:21

标签: php mysql arrays memcached

让下表约有~100 000行:

CREATE TABLE `product_code` (
  `value` varchar(64) COLLATE utf8_unicode_ci NOT NULL,
  `type` varchar(16) COLLATE utf8_unicode_ci NOT NULL,
  `product_id` varchar(32) COLLATE utf8_unicode_ci NOT NULL,
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

我需要经常查询这个表,所以我想把结果集(作为数组)放在Redis或Memcached中。

我做了一些数学运算( utf-8是4个字节不是真的,看@Daan评论,4个字节仍然是一个悲观的猜测):

  • value :( 1 * 4)+(64 * 4)= 388字节
  • type :( 1 * 4)+(16 * 4)= 68字节
  • product_id :( 1 * 4)+(32 * 4)= 132字节

一行=最多588个字节,总计应为58800000字节= ~56MB +索引大小。这是对的吗?

但对我来说似乎太过分了,事实上我现在在该表中有大约50 000行,以下查询显示6864896字节= ~6.5 MB

SELECT 
    DATA_LENGTH + INDEX_LENGTH AS size
FROM
    information_schema.TABLES
where
    TABLE_NAME = 'product_code'

0 个答案:

没有答案