巨大テーブルが扱えない?
例外が発生したのでご報告します。
原因はわかってます、テーブルの項目数が多すぎてメモリ不足?になったんです。
ファイル自体は100MBぐらいなのですが。
分割するなり工夫するなりしろと言わればそれまでなのですが、一応…

114万件のテーブルを1つだけ含むファイル(100MB程度)を開いて
列ヘッダーで右リックするとしばらく固まったのち例外が発生
(このときPupSQLite.exeのメモリ消費量は1280MBでした)

Application.ThreadExceptionによる例外通知です。
――――――――



エラーが発生しました。以下の情報と再現可能なファイル、
もしくは操作を添えてPupまでお知らせ頂ければ改善させて頂きます。

【バージョン】1.30.15.5
【エラー内容】
種類 'System.OutOfMemoryException' の例外がスローされました。

【スタックトレース】
場所 System.Windows.Forms.PropertyStore.SetInteger(Int32 key, Int32 value)
場所 System.Windows.Forms.DataGridViewTextBoxCell.set_MaxInputLength(Int32 value)
場所 System.Windows.Forms.DataGridViewTextBoxCell.Clone()
場所 System.Windows.Forms.DataGridViewRow.CloneCells(DataGridViewRow rowTemplate)
場所 System.Windows.Forms.DataGridViewRow.Clone()
場所 System.Windows.Forms.DataGridViewRowCollection.get_Item(Int32 index)
場所 PupSQLite.Form_DataGridView.MySort(Int32 SortedColumnIndex, SortOrder So)
場所 PupSQLite.Form_DataGridView.dgv_ColumnHeaderMouseClick(Object sender, DataGridViewCellMouseEventArgs e)
場所 System.Windows.Forms.DataGridView.OnColumnHeaderMouseClick(DataGridViewCellMouseEventArgs e)
場所 System.Windows.Forms.DataGridView.OnMouseClick(MouseEventArgs e)
場所 System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
場所 System.Windows.Forms.Control.WndProc(Message& m)
場所 System.Windows.Forms.DataGridView.WndProc(Message& m)
場所 System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
場所 System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
場所 System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)

  • DARUMA
  • 2017/11/22 (Wed) 17:16:34
Re: 巨大テーブルが扱えない?
ご利用ありがとうございます。Pupです。

確かに非常に大きいテーブルを開くとメモリ不足になると思います。
それだけのデータを一覧で見る必要は低いと思いますので、オプションの編集タブで「読み込み最大行数」を10000とかに絞って頂けるといいかと思います。(ページングしてくれるようになります)
よろしくお願いいたします。
  • Pup
  • 2017/11/29 (Wed) 11:14:25
Re: 巨大テーブルが扱えない?
おお、こんな便利な設定があったのですね!オプションをよく見ていませんでした。すみません

オプションついでに質問なのですが、DATETIME型を表示したとき、
セルには日付のみが表示されていて時刻が無いのですが、これも表示設定などあるでしょうか?
  • DARUMA
  • 2017/11/29 (Wed) 13:41:53
Re: 巨大テーブルが扱えない?
ちなみに、DATETIMEの1項目だけをもつテーブルを新規作成(テーブル名以外、すべてデフォルトの設定を使う)
して、セルの右クリックメニューで「挿入→今日の日付」を選ぶと落ちますね。

また、DATETIMEとINTEGERの2項目を持つテーブルを作成(これもテーブル名以外、すべてデフォルトの設定を使う)
して、INTEGER側のセルの右クリックメニューで「挿入→今日の日付」を選んでから、
DATETIME側のセルを選んでも落ちるみたいです。
  • DARUMA
  • 2017/11/29 (Wed) 13:54:28
Re: 巨大テーブルが扱えない?
ご利用ありがとうございます。Pupです。
確かに新規行で挿入すると上手く行きませんでした。取り敢えず、新規行での操作を無効したものをリリースしております。

また、DateTime型の書式はオプションの「SQLite」タブで設定可能です。
よろしくお願いいたします。
  • Pup
  • MAIL
  • 2017/11/29 (Wed) 21:16:31

返信フォーム






プレビュー (投稿前に内容を確認)