MySQLとetsメモリのアーランパフォーマンステスト

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)。

おすすめ

転載: www.cnblogs.com/ye-jing/p/12705836.html