ERLANG操作mysqlデータベースパフォーマンステスト
時間/ ミリ秒 |
1W / 1 |
10W / 1 |
50W / 1 |
100W / 1 |
インサート |
4306 |
35958 |
189681 |
285401 |
更新 |
5273 |
57502 |
276449 |
576845 |
選択する |
9797 |
96892 |
465241 |
883871 |
削除 |
5414 |
55614 |
295825 |
592211 |
最初のテストデータは正確ではありませんが、プロセスはこのようなものです
で MySQLを挿入(挿入)データは、399マイクロ秒の平均を消費します
更新更新は平均558.5マイクロ秒を消費します。
--------- クエリは最も時間がかかり、レコードを選択する平均時間は937.5マイクロ秒です。
レコードを削除するのに平均 571.2マイクロ秒かかりました。
====追加されたio:形式()...
352,392,332,330、(挿入、更新、選択、削除)MySQLデータベースの平均消費時間
========メッセージコードの印刷後にデータを削除します
ETS効率テスト
|
セットする |
Ordered_set |
バッグ |
Duplicate_bag |
新着() |
2.81 |
3.71 |
2.96 |
2.66 |
インサート() |
0.16 |
0.31 |
0.16 |
1.4 |
調べる() |
0.15 |
0.16 |
0.15 |
0.16 |
4つのタイプのEtsテーブルは、新しいテーブルを作成するときにほぼ同じ時間で、2〜3マイクロ秒の間です。
外部キーテーブル挿入の消費時間は一定であり、挿入データの消費時間は約0.2マイクロ秒です。注文された外部キーテーブルの消費時間は、テーブルのデータエントリに関連しています。
-------同じキーテーブルは0.2マイクロ秒のデータを挿入し、duplicate_bagは約1.5マイクロ秒かかります(同じキーテーブルを使用すると、同じキーテーブルをコピーすると、同じキーを持つすべての要素が比較されますが、多数のタプルが同じキーを持つ場合、より時間がかかります)
4つのテーブルのクエリ時間も同様で、0.5マイクロ秒以内、 0.2マイクロ秒の間です。
コード:
-module(connet_mysql)。
-export([start / 0、connect_mysql / 0、change_mysql / 2])。
-export([make_ets / 1、create_ets / 1、insert / 2、look_data / 2])。
%-export([insert_data / 0、update_data / 0、delete_data / 0、select_data / 0])。
%% ------------------------------------------------ --------------------------------------- %%
%% ------- ------------------------ ERLANG操作mysqlデータベースパフォーマンステスト-------------------- -%%
%% -------------------------------------------- ------------------------------------------- %%
%% ================================================ ===================
%%挿入、選択(主キーインデックスを使用)、更新(主キーインデックスを使用)、
%%削除(主キーインデックスを使用)1w、10、50 、各100wレコードにかかる時間。
%% ================================================ ===================
start()->
mysql:start_link(test、 "localhost"、 "root"、 "lengnuan"、 "village")。
%mysql:start_link(test、 "localhost"、3306、 "root"、 "lengnuan"、 "village"、undefined、utf8)。
%% ================================================ ===================
%%连接MySQL
%% ========================= ==========================================
connect_mysql()->
mysql:connect (test、localhost、3306、root、lengnuan、village、true)。
%% ================================================ ====================
%%操作データ库
%% ======================== ============================================
change_mysql(N、Action) ->
statistics(runtime)、
statistics(wall_clock)、
I = 1、
caseアクションの
挿入->
fac(1、N、fun(I)-> insert_data(I)end);
更新->
fac(1、N、fun(I)-> update_data(I)end);
選択->
fac(1、N、fun(I)-> select_data(I)end);
削除->
fac(1、N、fun(I)-> delete_data(I)end)
end、
{_、Time} = statistics(runtime)、
{_、Time1} = statistics(wall_clock)、
U1 = Time * 1000 、
%io:format( "=========== ------------ ===============〜s"、[S ])、
io:format( "使用時間〜p -------〜p〜n"、[U1、Time1])。
%fac(N、N、Fun)-> Fun(N);
%fac(I、N、Fun)->
%Fun(I)、
%fac(I + 1、N、Fun)。
%% ================================================ =======================
%%テーブルにデータを挿入
%% ================== ================================================== ===
insert_data(I)->
io:format( "===〜p〜n"、[I])、
mysql:fetch(
test、
[<< "insert into person(age、name)values(18、 'wangfugui') ">>]
)。
%% ================================================ =======================
%%詳細表内データ
%% =================== ================================================== ==
update_data(I)->
%io:format( "===
〜p〜n "、[I])、Sql = io_lib:format( "update person set age = '30' where id =〜w"、 [I])、
結果= mysql:fetch(
test、
[Sql]
)。
%io:format( "=== result ==:〜p〜n"、[Result])。
%% ================================================ =======================
%%展望表の中のデータ
%% ================== ================================================== ===
select_data(I)->
Sql = io_lib:format( "select * from person where id =〜w"、[I])、
%io:format( "===〜p〜n"、[Sql] )、
結果= mysql:fetch(
test、
[Sql]
)。
%io:format( "is =============:〜p〜n"、[結果])。
%テスト、
%% ================================================ =======================
%%删除表中のデータ
%% ================== ================================================== ===
delete_data(I)->
%io:format( "===
〜p〜n "、[I])、Sql = io_lib:format( "delete from person where id =〜w"、[I]) 、
%Sql = "id where 35 where person from delete"、
Result = mysql:fetch(
test、
[Sql]
)。
%io:format( "=====〜p〜n"、[Result])。
%SQL1 = io_lib:format( "replace into` game_info`( `cf_name`、` cf_value`)values( 'version'、from_unixtime(〜w、 '%Y-%m-%d-%H-%i-% S ')) "、[StartTimeN])、
%% ------------------------------------------------ ---------------------------------------- %%
%% ------ --------------------------------- etsパフォーマンステスト-------------- ------------------------- %%
%% --------------------- -------------------------------------------------- ----------------- %%
make_ets(N)->
%%は、識別子を使用してetsテーブルを作成しますResult
Result = ets:new(?MODULE、[bag])、
%挿入入データ
%{Time、_} = timer:tc(fun()-> insert_value(Result)end)、
%io:format( "use time〜p〜n "、[Time / 73])、
statistics(runtime )、
L = insert_value(Result)、
{_、Time} = statistics(runtime)、
io:format( "insert ets use time:〜p microsecond〜p〜n "、[Time * 1000/20000、L])、
R = ets:all()、
io:format( "all ets is:〜p"、[R])、
%%%创建的的ets 使用時間
%{Ref1、_} = timer:tc(?MODULE、create_ets、[N])、
%io:format( "create ets use time:〜p microsecond〜n"、[Ref1 / N])、
%create_ets(N)、
%% etsにデータを挿入する時間%%
{Ref2、Value} = timer:tc(?MODULE、insert、[N、Result])、
%% io:format( "insert use time:〜p microsecond 、〜p〜 n "、[Ref2 / N、Value])、
%insert(N、Result)、
%%% 查询ets表用時間%%{Ref3、Value1} = timer:tc(?MODULE、look_data、[N、Result])、%%
io:format( "lookup use time:〜p microsecond〜p〜n " 、[Ref3 / N、Value1])、
%look_data(N、Result)、
%% etsテーブルを削除します
ets:delete(結果)。
%%创建ets表作成
_ets(N)->
統計(ランタイム)、
fac(1、N、fun()-> ets:new(?MODULE、[bag])end)、
{_、Time} = statistics(runtime )、
io:format( "create ets use time:〜p microsecond〜n"、[Time * 1000 / N])。
%%在地中
挿入入データ挿入(N、結果)->
統計(実行時)、
L = fac(1、N、fun()-> ets:挿入(結果、{人、3})終了)、
{_ 、Time} = statistics(runtime)、
io:format( "insert ets use time:〜p microsecond〜p〜n"、[Time * 1000 / N、L])、
L.
%N、
%ets:insert(Result 、{人、3})。
%%查询ets某个表
look_data(N、Result)->
statistics(runtime)、
L = fac(1、N、fun()-> ets:lookup(Result、person8)end)、
{_、Time} = statistics(runtime)、
io:format( "look ets use time:〜p microsecond〜p〜n"、[Time * 1000 / N、L])、
L.
fac(N、N、Fun)-> Fun();
fac(I、N、Fun)->
Fun()、
fac(I + 1、N、Fun)。