看板 Database 關於我們 聯絡資訊
※ 引述《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