C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[4]: MariaDB アプリによる通信速度の違い


(過去ログ 144 を表示中)

[トピック内 5 記事 (1 - 5 表示)]  << 0 >>

■84281 / inTopicNo.1)  MariaDB アプリによる通信速度の違い
  
□投稿者/ gedomal (1回)-(2017/06/08(Thu) 22:58:34)

分類:[C#] 

2017/06/08(Thu) 23:03:06 編集(投稿者)

お世話になります。

クラウド上のMariaDB 10.0.23にINTとLONGTEXTのみの以下のようなテーブルがあります。

CREATE TABLE `datatable` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`value` longtext NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

valueに10MBくらいのテキストデータが入っており、

SELECT value FROM datatable WHERE id=1 LIMIT 1;

といったクエリでvalueを取得する際、HeidiSQL上から上記クエリを発行すると3秒程度で受信完了するのですが、MySQL Connector/Netを使用して

using (var Cnn = new MySqlConnection("connectionString"))
using (var Cmd = Cnn.CreateCommand())
using (var da = new MySqlDataAdapter(Cmd))
using (var dt = new DataTable())
{
Cmd.CommandText = "SELECT value FROM datatable WHERE id=1 LIMIT 1;";
da.Fill(dt);
}

のようにするとプロセスの状態がWriting to netのまま時間が過ぎ、タイムアウトになってしまいます。
この違いはどこから来るのでしょうか。

引用返信 編集キー/
■84282 / inTopicNo.2)  Re[1]: MariaDB アプリによる通信速度の違い
□投稿者/ 渋木宏明 (16回)-(2017/06/09(Fri) 01:11:41)
> valueに10MBくらいのテキストデータが入っており、

.NET の内部コードは UTF16 なので、変換に時間を食っているとか。

引用返信 編集キー/
■84288 / inTopicNo.3)  Re[2]: MariaDB アプリによる通信速度の違い
□投稿者/ gedomal (2回)-(2017/06/09(Fri) 12:03:44)
>>valueに10MBくらいのテキストデータが入っており、
>
> .NET の内部コードは UTF16 なので、変換に時間を食っているとか。
>

テーブルおよびカラムの文字コードをutf16に変更して試してみましたが結果は変わりませんでした。

ローカルにmy.cnf設定は全く同じ仮想環境を作り、試してみるとそちらでは問題ありませんでした。

クラウドのVPS上でのみWriting to netになるので単純に通信速度の問題のように見えるのですが、
であればHeidiSQLからだと問題なく速度が出るのか不可解です。

HeidiSQLからだと60Mbpsくらい、MySQL Connector/Netの場合は200Kbpsくらいの速度です。
引用返信 編集キー/
■84290 / inTopicNo.4)  Re[3]: MariaDB アプリによる通信速度の違い
□投稿者/ 渋木宏明 (17回)-(2017/06/10(Sat) 10:59:34)
>using (var da = new MySqlDataAdapter(Cmd))
>using (var dt = new DataTable())

DataTable を使ってるんですね。
これは遅いです。

ExecuteReader か Dapper を使って読み込んでみてはどうでしょうか。

引用返信 編集キー/
■84291 / inTopicNo.5)  Re[4]: MariaDB アプリによる通信速度の違い
□投稿者/ ヤスシ (1回)-(2017/06/11(Sun) 04:12:10)
ヤスシ さんの Web サイト
No84290 (渋木宏明 さん) に返信
> >using (var da = new MySqlDataAdapter(Cmd))
> >using (var dt = new DataTable())
>
> DataTable を使ってるんですね。
> これは遅いです。
>
> ExecuteReader か Dapper を使って読み込んでみてはどうでしょうか。
>

ご情報ありがとうございます。
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -