运行环境:
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文件:
而用erlang odbc模块,进行写入:
每条insert消耗了40ms,几乎是前一种方式的500倍。
刚才在php里试了下,效率和mysql命令直接导入差不多;看来,原因应该是在erlang 的odbc模块了。
PHP mysql:
PHP odbc:
%%%%%%% 附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) )