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

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

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

AccessファイルのClose

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

■96259 / inTopicNo.1)  AccessファイルのClose
  
□投稿者/ ミルミル (1回)-(2020/11/07(Sat) 07:15:52)

分類:[C#] 

~~~~~~~~~~~~~~~~~
開発環境:VS2015
使用言語:C#
OS:Win10
~~~~~~~~~~~~~~~~~

一定周期でAccessファイルへの記録を行っているのですが、
最後のクローズ処理で時間が掛かることがあり、周期に間に合わないことがあります。
通常であれば、クローズ処理自体、数十msecのところが、4000msecくらい掛かることがあるという状況です。
なぜこのような症状が出るのか分からず困っておりますので、解決策等ご教授いただけると有難いです。
よろしくお願いいたします。

コードとしては、以下の形になります。

System.Data.OleDb.OleDbConnection cn = new System.Data.OleDb.OleDbConnection();

cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" + FILEName + ";";

cn.Open();

--書込み処理--

cn.Close();

引用返信 編集キー/
■96260 / inTopicNo.2)  Re[1]: AccessファイルのClose
□投稿者/ WebSurfer (2148回)-(2020/11/07(Sat) 09:33:20)
No96259 (ミルミル さん) に返信

> 通常であれば、クローズ処理自体、数十msecのところが、4000msecくらい掛かることがあるという状況です。

どのように計測しているのでしょう?
引用返信 編集キー/
■96261 / inTopicNo.3)  Re[1]: AccessファイルのClose
□投稿者/ furu (89回)-(2020/11/07(Sat) 09:34:18)
No96259 (ミルミル さん) に返信
DBサーバーではなく、ファイルですからね。

周期が短いなら
クローズしないで回した方がいいと思います。

最適化はしてますよね。
引用返信 編集キー/
■96262 / inTopicNo.4)  Re[1]: AccessファイルのClose
□投稿者/ WebSurfer (2149回)-(2020/11/07(Sat) 09:48:00)
No96259 (ミルミル さん) に返信

> 通常であれば、クローズ処理自体、数十msecのところが、4000msecくらい掛かることがあるという状況です。

書き忘れましたが・・・

条件の違いがありますよね? それは何でしょう? 長いときは「--書込み処理--」という
ところに長い時間のかかる処理をしていて、それに時間がかかっていて、Close できないと
いうことはないですか?

access oledb close too long とかをキーワードにググって調べて、関係ありそうな解決策
を試すということはしましたか? していれば、試したことを書いてください。ググって調
べるということをしてなければやってみましょう。
引用返信 編集キー/
■96271 / inTopicNo.5)  Re[2]: AccessファイルのClose
□投稿者/ ミルミル (2回)-(2020/11/09(Mon) 06:37:24)
No96262 (WebSurfer さん) に返信
> ■No96259 (ミルミル さん) に返信
>
>>通常であれば、クローズ処理自体、数十msecのところが、4000msecくらい掛かることがあるという状況です。
>
> 書き忘れましたが・・・
>
> 条件の違いがありますよね? それは何でしょう? 長いときは「--書込み処理--」という
> ところに長い時間のかかる処理をしていて、それに時間がかかっていて、Close できないと
> いうことはないですか?
>
> access oledb close too long とかをキーワードにググって調べて、関係ありそうな解決策
> を試すということはしましたか? していれば、試したことを書いてください。ググって調
> べるということをしてなければやってみましょう。


ご回答ありがとうございます
計測は、closeの前後にStopwatchを入れて見ております。
また、長い時と短い時で「--書込み処理--」の内容に違いはございません。

自分でも調べてみましたが、同じような症状を見つけれない状態でしたので、
質問させていただきましたが、もう少し調べてみたいと思います。
引用返信 編集キー/
■96272 / inTopicNo.6)  Re[2]: AccessファイルのClose
□投稿者/ ミルミル (3回)-(2020/11/09(Mon) 06:41:22)
No96261 (furu さん) に返信
> ■No96259 (ミルミル さん) に返信
> DBサーバーではなく、ファイルですからね。
>
> 周期が短いなら
> クローズしないで回した方がいいと思います。
>
> 最適化はしてますよね。


ご回答ありがとうございます。

クローズしないというのも考えてみたいと思います。

尚、最適化とは何でしょうか?
現状、特に何もしていないと思います。
引用返信 編集キー/
■96275 / inTopicNo.7)  Re[1]: AccessファイルのClose
□投稿者/ 魔界の仮面弁士 (2902回)-(2020/11/09(Mon) 09:17:00)
No96259 (ミルミル さん) に返信
> 最後のクローズ処理で時間が掛かることがあり、周期に間に合わないことがあります。

単一 SQL だからといって、トランザクション処理を省略している箇所が無いでしょうか。
https://docs.microsoft.com/ja-jp/dotnet/api/system.data.oledb.oledbconnection.begintransaction?view=dotnet-plat-ext-3.1

明示的に Commit しない場合は、非同期更新になってしまうため、Close のタイミングに
反映処理が集中してしまうことがあるかも知れません。下記は System.Data.OleDb ではなく
ADODB や DAO の場合の事例ですが、基本的には ADO.NET に対してもいえる事かと思います。
http://www.canalian.com/workshop/access/JetCache.html


> 通常であれば、クローズ処理自体、数十msecのところが、4000msecくらい掛かることがあるという状況です。

もしくは、セキュリティ ソフトウェアにあるリアルタイム検査のタイミングと競合していたとか、
ハードディスク上に経度の不良セクタがあって、その領域が利用された時にリトライ遅延が発生しているとか。
引用返信 編集キー/
■96276 / inTopicNo.8)  Re[3]: AccessファイルのClose
□投稿者/ furu (90回)-(2020/11/09(Mon) 10:20:49)
No96272 (ミルミル さん) に返信
> ■No96261 (furu さん) に返信
> 尚、最適化とは何でしょうか?
> 現状、特に何もしていないと思います。

Accessが遅い場合、最適化するといいらしい。

https://support.microsoft.com/ja-jp/office/%E3%83%87%E3%83%BC%E3%82%BF%E3%83%99%E3%83%BC%E3%82%B9%E3%82%92%E6%9C%80%E9%81%A9%E5%8C%96%E3%81%8A%E3%82%88%E3%81%B3%E4%BF%AE%E5%BE%A9%E3%81%99%E3%82%8B-6ee60f16-aed0-40ac-bf22-85fa9f4005b2
引用返信 編集キー/

このトピックをツリーで一括表示


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

このトピックに書きこむ