erlang odbc连mysql的性能好差!

运行环境:

Erlang R13B01 (erts-5.7.2) [source] [smp:2:2] [rq:2] [async-threads:0] [hipe] [kernel-poll:false]

linux 2.6.28-13-generic

 

向一个表里插入1k条数据,5个字段都是数值类型,MyISAM引擎,试了一下两种情况:

 

直接执行mysql导入sql文件:

 

 

real 0m0.096s
user 0m0.016s
sys 0m0.012s

 

而用erlang odbc模块,进行写入:

 

 

real 0m40.851s
user 0m0.236s
sys 0m0.540s

 

每条insert消耗了40ms,几乎是前一种方式的500倍。

 

 

刚才在php里试了下,效率和mysql命令直接导入差不多;看来,原因应该是在erlang 的odbc模块了。

 

PHP mysql:

 

 

real 0m0.110s
user 0m0.016s
sys 0m0.020s

 

 

PHP odbc:

 

 

real 0m0.131s
user 0m0.028s
sys 0m0.048s

 

 

 

%%%%%%% 附erlang odbc 测试code %%%%%%%

 

 

-module(odbc_test).
-compile(export_all).


loop(_, 0) -> ok;
loop(Ref, N) ->
	odbc:sql_query(Ref, "insert into odbc_test(n1, n2, n3, n4, n5) values(1,2,3,4,5)"),
	loop(Ref, N-1).

start() ->
	odbc:start(),
	{ok, Ref} = odbc:connect("DSN=mysql-test;UID=root;PWD=mysql", []),
	ok = loop(Ref, 1000).
 

表结构:

 

create table odbc_test
(
	id int(11) not null auto_increment,
	n1 int(11) not null,
	n2 int(11) not null,
	n3 int(11) not null,
	n4 int(11) not null,
	n5 int(11) not null,
	primary key (id)
)

你可能感兴趣的:(sql,PHP,mysql,linux,erlang)