10GBのCSVファイルのソートが遅いのはなぜですか? (49レス)
1-

39: デフォルトの名無しさん [sage] 2023/09/15(金) 20:30:51.52 ID:mLRMgWkC(1) AAS
やさいい
40: デフォルトの名無しさん [sage] 2023/09/27(水) 20:16:21.16 ID:PKUrAitV(1) AAS
まず各ブロック当たり1000行とかに分ける。ブロック単位でソートする。
1.ブロックA/B を連結してAB間でソート。  B=全体の数/2
2.ブロックA+1, B+1 で連結してソート
3. ブロックA+全体の数/2- 1(前半最後まで)、ブロックB+前半最後までを連結してソート
4.今度は全体の前半で1-3 風にブロックソート。後半〜最後までで1-3 風にブロックソート
5. 前半〜前半+3/4 でブロックソート、前半+2/4〜前半+4/4 でブロックソート、
 ......
・・・・

ってのを大昔 BASIC で作ったのですが、なぜかデータがゼロに
なってしまうバグが出て作るのを止めてしまいました。ちゃんちゃん。駄目じゃん俺。
41: デフォルトの名無しさん [] 2023/10/04(水) 21:29:03.45 ID:ja1//dn8(1) AAS
だいたいデータの入れ替えに時間が掛かるんだよな
メディアがHDDとかだと尚更
普通はインデックスで実データを間接参照させるんだが
まあ、やって無いんだろうなぁ
42: デフォルトの名無しさん [] 2023/10/05(木) 11:43:25.54 ID:AvBTKCCq(1) AAS
速度を優先するなら固定長CSVの採用をオススメする
各行へのランダムシークが出来るし並び替えに必要な行の入れ替えも可能になる
最近のutf-8などを使いたい場合は文字数での管理が難しくなるがあくまでもストレージ上でのサイズを基準にして
クラスタサイズも考慮し列サイズを決めていこう
検索性能を上げるには外部インデックスを作るしかないだろう
ファイルサイズは100倍ぐらいに増えるかもしれないが単純なファイルキャッシュだけで下手なDBでは敵わない速度が出せるだろう
43: デフォルトの名無しさん [sage] 2023/10/08(日) 19:41:45.47 ID:Unktq8Si(1) AAS
>>31
31(2): デフォルトの名無しさん [] 2023/09/12(火) 12:38:34.37 ID:A3YXlMvb(1/2) AAS
>>30
1億行、125列
125列のレコードが1億行あったらカンマだけで10GB超えるんだが
44: デフォルトの名無しさん [sage] 2023/10/12(木) 21:43:44.24 ID:5lP2cmIF(1) AAS
ひとつが100MBくらいのファイルになるように
ディレクトリ構造でB木をつくって(アンバランスでもOK)
個々にソートしたものを最後に結合
45: デフォルトの名無しさん [sage] 2024/11/08(金) 00:13:58.03 ID:0/QV09gu(1) AAS
csvだから遅いとかはない、デシリアライズして云々するよりそのままテキスト(あるいはその部分文字列、フィールド)として比較するならむしろ有利
単にサイズの問題、メモリより十分小さいサイズに分割(今どきなら数GBなんで100MBあたり)して個別にソート、マージ
むしろテキストにシリアライズされたデータにおいて、最も実用的な類のフォーマットに入る
46: デフォルトの名無しさん [] 2025/05/10(土) 00:23:13.60 ID:Fj2J3+nY(1) AAS
とすと
47: デフォルトの名無しさん [sage] 2025/05/10(土) 14:35:35.59 ID:7IHH6CUB(1) AAS
クソスレかとおもったら想像以上に真面目に考察してるスレだったw
48: デフォルトの名無しさん [sage] 2025/05/10(土) 20:02:05.08 ID:ij0zz7My(1) AAS
マジレスはあるかもしれんが別に真面目な考察はないだろ
実は良スレだったんだと雰囲気で既成事実にするな
49: デフォルトの名無しさん [sage] 2025/05/12(月) 11:20:32.62 ID:Zw0HuL6G(1) AAS
DBをエクスポートしたら数GB出てきたとか普通だけど
1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.287s*