作者Lucemia (生の直感、死の予感)
看板Database
标题Re: [DB ] InnoDB一问
时间Sat Oct 27 03:22:31 2007
※ 引述《JoeHorn (狮子贝轨n之铭言:贝轨뀠引述《Lucemia (生の直感、死の予感)》之铭言:
: : MyISAM 有点不够用了,想请教一些MySQL下 Innodb的问题
: : 1. 从MYSQL的文件看来Innodb比起MyISAM更能够处理大资料量、
: : 以及大流量的服务?
: 大致上来说,是这样没错。
: 不过,InnoDB 有其弱项;两者并不互斥,可以搭配使用。 :p
: http://0rz.tw/2234S
: http://0rz.tw/633eS
: http://0rz.tw/f83ft
看起来InnoDB很好 ..
在select 的比较上和MyISAM互有胜负
在insert / update 原本的innodb强项上就不用比了..
我先比较了一下他的my.ini设置 与我目前的设置差异,
我现在有两台机械,一台上线跑(Linux 全使用MyISAM),
一台在手边测效能(window 混着测InnoDB与MyISAM)
(我使用mysql安装时的server machine预定设置)
Linux Window Testing
RAM 4GB 4GB 16GB
Key_buffer_Size 8M 175M 1.5G!
innodb_buffer_pool_size x 339M 1.5G!
innodb_log_file_size x 170M 100M
innodb_thread_concurrency x 10 8
max_connections 100 100 1500
(这应该是dedircated Server Machine)
table_cache 256 512
这是网页上有的参数设定..
key_buffer_size 与 innodb_buffer_pool_size
这两项虽然我设的已经比一般使用要大了,
但还是输Testing网页上的设定一大节,
我想这两个变数的设定就是关键所在吗?
另外请问Innodb 的 FOREIGN KEY constraints(外部键约束)
这个功能重要吗?
因为他一方面不能foreign 到 myisam的table
另一方面 如果是:
(id, a_id, b_id) 这样的table(用来做mxm对应)
通常会将 a_id, b_id 设成unique(a_id,b_id)
此时如果要在a_id, b_id上使用外部键约束,
就变成要再新增两组 index(a_id), index(b_id)
这个table 就变成有四组key了!!
: 以上三个网页可以看看。
: : 2. MyISAM读一个问题是table 大小受OS档案大小上限的影响,
: : 而且在300 ~ 400mb时,没到上限就会变的有点慢了。
: : 现在在想使用innodb 是否能够解决这方面的问题。
: : 但改用innodb後,他把5~6个table合并成一个2Gb的ibdata1文件
: : 这样岂不是更慢、更容易超过os上限吗?
: : my.ini 中提到有innodb file path 的设定,
: : 但是那个是要一个资料库档案一个资料库档案的手动分配增加吗?
: : 如果我要做一个10gb的应用,以2gb的档案来存
: : 就要先开好5个档案?
: 不知道您有没有观察过 MySQL 运行状态的数值? 并纪录 slow query?
slow query 应该还好 只有2x多个,有时候要dump整个table来算
所以一定会超过long_query_time。
现在会觉得慢的情况是一个页面所需大约21个select的动作
合计需要3~5sec(很少数的情况会爆炸到20sec),
虽然时间上不算是slow query 但是以页面来说就完全不行 ww
: 300 ~ 400 MB 应该不会是问题。
: 小弟手上某台 FreeBSD 的某个 MySQL DB ,里面有块 MyISAM 的 table size 是 6.3G。
Soga ... 档案大小只会对速度造成线性影响吗?
: : innodb使用起来和MyISAM感觉差蛮多的,第一次用没有commit,重开死一次
: : 第二次太晚commit,当掉又死一次。mmm
: : 看到phpmyadmin中看到的资料笔数会浮动也是有点傻眼,
: : 资料不知道有没有正确的update进去。
: 根据小弟看过的案例,InnoDB 的损坏率的确比较高。 XD
感谢回答
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.110.216.36