[硬體配置]
cpu : amd2500+ (1.8g)
記憶體: 1g/現代
硬碟: 80g/ide
[軟體配置]
os : windows xp sp2
se : php5.2.1
db : mysql5.0.37
web: iis6
[mysql表結構]
create table `myisam`(
`id` int(11) not null auto_increment,
`name` varchar(100) default null,
`content` text,
primarykey (`id`)
) engine=myisamdefault charset=gbk;
create table `innodb`(
`id` int(11) not null auto_increment,
`name` varchar(100) default null,
`content` text,
primarykey (`id`)
) engine=innodbdefault charset=gbk;
[資料內容]
$name ="heiyeluren";
$content= "mysql支援數個儲存引擎作為對不同表的型別的處理器。mysql儲存引擎包括處理事務安全表的引擎和處理非事務安全表的引擎:· myisam管理非事務表。它提供高速儲存和檢索,以及全文搜尋能力。myisam在所有mysql配置裡被支援,它是預設的儲存引擎,除非你配置mysql預設使用另 外乙個引擎。·memory儲存引擎提供「記憶體中」表。merge儲存引擎允許集合將被處理同樣的myisam表作為乙個單獨的表。就像myisam一樣,memory和merge儲存引擎處理非事務表,這兩個引擎也都被預設包含在mysql中。釋:memory儲存引擎正式地被確定為heap引擎。·
innodb和bdb儲存引擎提供事務安全表。bdb被包含在為支援它的作業系統發布的mysql-max二進位制分發版裡。innodb也預設被包括在所有mysql 5.1二進位制分發版裡,你可以按照喜好通過配置mysql來允許或禁止任一引擎。·example儲存引擎是乙個「存根」引擎,它不做什麼。你可以用這個引擎建立表,但沒有資料被儲存於其中或從其中檢索。這個引擎的目的是服務,在mysql源**中的乙個例子,它演示說明如何開始編寫新儲存引擎。同樣,它的主要興趣是對開發者。";
[插入資料-1](innodb_flush_log_at_trx_commit=1)
myisam 1w:3/s
innodb 1w:219/s
myisam 10w:29/s
innodb 10w:2092/s
myisam 100w:287/s
innodb 100w:沒敢測試
[插入資料-2](innodb_flush_log_at_trx_commit=0)
myisam 1w:3/s
innodb 1w:3/s
myisam 10w:30/s
innodb 10w:29/s
myisam 100w:273/s
innodb 100w:423/s
[插入資料3](innodb_buffer_pool_size=1024m)
innodb 1w:3/s
innodb 10w:33/s
innodb 100w:607/s
[插入資料4](innodb_buffer_pool_size=256m, innodb_flush_log_at_trx_commit=1, setautocommit=0)
innodb 1w:3/s
innodb 10w:26/s
innodb 100w:379/s
[mysql 配置檔案] (預設配置)
# mysql serverinstance configuration file
[client]
port=3306
[mysql]
default-character-set=gbk
[mysqld]
port=3306
basedir="c:/mysql50/"
datadir="c:/mysql50/data/"
default-character-set=gbk
default-storage-engine=innodb
sql-mode="strict_trans_tables,no_auto_create_user,no_engine_substitution"
max_connections=100
query_cache_size=0
table_cache=256
tmp_table_size=50m
thread_cache_size=8
myisam_max_sort_file_size=100g
myisam_max_extra_sort_file_size=100g
myisam_sort_buffer_size=100m
key_buffer_size=82m
read_buffer_size=64k
read_rnd_buffer_size=256k
sort_buffer_size=256k
innodb_additional_mem_pool_size=4m
innodb_flush_log_at_trx_commit=1
innodb_log_buffer_size=2m
innodb_buffer_pool_size=159m
innodb_log_file_size=80m
innodb_thread_concurrency=8
【總結】
可以看出 在mysql5.0裡面,myisam和innodb儲存引擎效能差別並不是很大,針對innodb來說,影響效能的主要是innodb_flush_log_at_trx_commit這個選項,如果設定為1的話,那麼每次插入資料的時候都會自動提交,導致效能急劇下降,應該是跟重新整理日誌有關係,設定為0效率能夠看到明顯提公升,當然,同樣你可以sql中提交「setautocommit = 0」來設定達到好的效能。另外,還聽說通過設定innodb_buffer_pool_size能夠提公升innodb的效能,但是我測試發現沒有特別明顯的提公升。
基本上我們可以考慮使用innodb來替代我們的myisam引擎了,因為innodb自身很多良好的特點,比如事務支援、儲存過程、檢視、行級鎖定等等,在併發很多的情況下,相信innodb的表現肯定要比myisam強很多,當然,相應的在my.cnf中的配置也是比較關鍵的,良好的配置,能夠有效的加速你的應用。
如果不是很複雜的web應用,非關鍵應用,還是可以繼續考慮myisam的,這個具體情況可以自己斟酌。
分享到:
2009-01-11 20:41
瀏覽 584
mysql儲存引擎靜態表 mysql儲存引擎
儲存引擎是mysql資料庫最重要的特性之一,使用者可以根據自身需求選擇合適的儲存引擎,例如 是否支援事務 批量插入速度 行級鎖或者表級鎖等相關特性。mysql預設支援很多種不同的儲存引擎,使用者在建立表的時候根據表的作用可以指定不同的儲存引擎。在mysql5.5之前預設儲存引擎都是myisam,5....
mysql儲存引擎用的多 MySQL儲存引擎知多少
mysql是我們經常使用的資料庫處理系統 dbms 不知小夥伴們有沒有注意過其中的 儲存引擎 storage engine 呢?有時候面試題中也會問道mysql幾種常用的儲存引擎的區別。這次就簡短侃一下儲存引擎那些事兒。先去查一下 引擎 概念。引擎 engine 是電子平台上開發程式或系統的核心元件...
mysql 自定義儲存引擎 MySQL儲存引擎
在mysql中,不需要在整個伺服器中使用同一種儲存引擎,針對具體的要求,可以對每乙個表使用不同的儲存引擎。一 myisam 1.不支援事務,也不支援外來鍵,但訪問速度快,對事務完整性沒有要求或者以select insert為主的應用基本都可以使用這個引擎來建立表。2.使用myisam引擎建立資料庫表...