免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 5201 | 回复: 12
打印 上一主题 下一主题

分享一个存储空间占用的比较的测试:myisam,innodb,oracle [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-12-14 20:08 |只看该作者 |倒序浏览
N周前听公司内一位高人讲课,他说oracle对同样一个源数据的空间的占用会比mysql多20%,一直心存疑虑,很想测试一下他说的

今天因为跟colin做个统计,涉及导入DW数据,所以正好观察了一下。


有一个文本文件大小有168M,共5793517行。

首先上午我将他导入到了oracle中做统计:

oracle的表结构如下:

Name Null? Type
----------------------------------------------------- -------- ------------------------------------
UIN NUMBER(11)
PET_ID NUMBER(20)
THKS NUMBER(11)

存储占用如下:
header_file:50 header_block:15115 bytes:179306496 blocks:21888
不知道什么是header_block,我再sqlldr导入相同量的数据,变化如下:
header_file:50 header_block:15115 bytes:346030080 blocks:42240

我还以为header就占了那么多block,结果是如下意思:
HEADER_FILE NUMBER ID of the file containing the segment header
HEADER_BLOCK NUMBER ID of the block containing the segment header

再看一下mysql:
mysql> desc thanks;
+--------+------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------+------------+------+-----+---------+-------+
| uin | int(11) | YES | | NULL | |
| pet_id | bigint(20) | YES | | NULL | |
| thks | int(11) | YES | | NULL | |
+--------+------------+------+-----+---------+-------+
3 rows in set (0.00 sec)

mysql> desc thanks_isam;
+--------+------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------+------------+------+-----+---------+-------+
| uin | int(11) | YES | | NULL | |
| pet_id | bigint(20) | YES | | NULL | |
| thks | int(11) | YES | | NULL | |
+--------+------------+------+-----+---------+-------+
3 rows in set (0.00 sec)

mysql> show table status like 'thanks%';
+-------------+--------+---------+------------+---------+----------------+-------------+------------------+--------------+-----------+----------------+---------------------+---------------------+------------+----------------+----------+----------------+-------------------------+
| Name | Engine | Version | Row_format | Rows | Avg_row_length | Data_length | Max_data_length | Index_length | Data_free | Auto_increment | Create_time | Update_time | Check_time | Collation | Checksum | Create_options | Comment |
+-------------+--------+---------+------------+---------+----------------+-------------+------------------+--------------+-----------+----------------+---------------------+---------------------+------------+----------------+----------+----------------+-------------------------+
| thanks | InnoDB | 10 | Compact | 5793789 | 44 | 259817472 | 0 | 0 | 0 | NULL | 2007-12-14 19:00:34 | NULL | NULL | gbk_chinese_ci | NULL | | InnoDB free: 3816448 kB |
| thanks_isam | MyISAM | 10 | Fixed | 5793517 | 17 | 98489789 | 4785074604081151 | 1024 | 0 | NULL | 2007-12-14 19:02:54 | 2007-12-14 19:03:10 | NULL | gbk_chinese_ci | NULL | | |
+-------------+--------+---------+------------+---------+----------------+-------------+------------------+--------------+-----------+----------------+---------------------+---------------------+------------+----------------+----------+----------------+-------------------------+

myisam用了98M,innodb用了259M

今天做完oracle的测试我还又去问了一下高人,他确实高,他对数据的敏感度好高啊:
me 12:00:39
我上次听你讲课,记得你说导入到oracle中的数据会浪费20%的空间,可我今天看了一下168M的文本文件倒进去,也就171M,似乎没什么浪费的
gaoren 18:01:53
me 12:00:39
我上次听你讲课,记得你说导入到oracle中的数据会浪费20%的空间,可我今天看了一下168M的文本文件倒进去,也就171M,似乎没什么浪费的

168M的文本文件,二进制文件可能也就100M。你导进去mysql试试,那个接近二进制文件大小

比如整数,二进制是4字节,文本可就长了
me 19:04:03
你一定说的是myisam了
me 19:04:32
我们这边用的都是innodb engine,倒进去更大,250多M
me 19:05:02
myisam确实小,仅仅98M

论坛徽章:
0
2 [报告]
发表于 2007-12-18 22:55 |只看该作者
竟然没人顶 ,很没有价值么?

论坛徽章:
1
数据库技术版块每日发帖之星
日期:2016-03-12 06:20:00
3 [报告]
发表于 2007-12-20 09:48 |只看该作者
没有什么价值
因为你连什么是事物性和非事务性表都搞不清楚

论坛徽章:
0
4 [报告]
发表于 2007-12-20 17:40 |只看该作者
qlks版主可以具体的讲讲么?
我是觉得如果拿myisam来做数据仓库的存储,做OLAP的话,还是可以节约很多空间的

论坛徽章:
0
5 [报告]
发表于 2007-12-20 17:58 |只看该作者
原帖由 bulletming 于 2007-12-20 17:40 发表
qlks版主可以具体的讲讲么?
我是觉得如果拿myisam来做数据仓库的存储,做OLAP的话,还是可以节约很多空间的


可是没有事务的支持,如果坏了而又没有备份,修复的可能性也不大。

论坛徽章:
0
6 [报告]
发表于 2007-12-21 09:37 |只看该作者
入了数据仓库后的很多原始数据不会再更改的,我觉得事务对于仅仅是需要查询和统计的表是没什么用处的

大家觉得呢?

还是希望qlks可以讲讲事物性和非事务性表存储上的大的差别在哪里?

论坛徽章:
0
7 [报告]
发表于 2007-12-21 15:15 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
8 [报告]
发表于 2008-03-11 15:54 |只看该作者
qlks版主令人失望啊!

论坛徽章:
0
9 [报告]
发表于 2008-03-11 17:05 |只看该作者
原帖由 bulletming 于 2007-12-21 09:37 发表
入了数据仓库后的很多原始数据不会再更改的,我觉得事务对于仅仅是需要查询和统计的表是没什么用处的

大家觉得呢?

还是希望qlks可以讲讲事物性和非事务性表存储上的大的差别在哪里?


事务性和非事务性的区别就在:
前者具备ACID。
后者不具备。
至于ACID是什么,你看看数据库原理吧

论坛徽章:
0
10 [报告]
发表于 2008-03-11 17:06 |只看该作者
而且数据仓库的数据引擎在MYSQL中建议用
archive
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP