※ 引述《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