70 мл строк

Form

Client
Регистрация
05.09.2020
Сообщения
335
Благодарностей
125
Баллы
43
Приветствую! Помогите с проблемой, есть список в 70мл строк, как с ним работать? После сбора никуда не сохраняет, никуда не переносит, всё время ему памяти не хватает (у меня 64 гб серверной оперативки), может подкинете идейку, а то я сам запарился
 

lancerok

Пользователь
Регистрация
03.01.2022
Сообщения
88
Благодарностей
48
Баллы
18
Разделить список
 

samsonnn

Client
Регистрация
02.06.2015
Сообщения
2 006
Благодарностей
1 759
Баллы
113
Приветствую! Помогите с проблемой, есть список в 70мл строк, как с ним работать? После сбора никуда не сохраняет, никуда не переносит, всё время ему памяти не хватает (у меня 64 гб серверной оперативки), может подкинете идейку, а то я сам запарился
У вас изначально подход не верный! Если так много строк, то не собирайте все в один файл изначально. При добавлении строк в файл, сделайте проверку на ограничение, например 1 000 000 строк. За тем создавайте новый файл и уже туда собирайте следующий 1 000 000 строк и так далее. Ну а обрабатывать тоже поочередно, первый файл, за тем второй, третий и так далее... Вот как только измените подход и не будет проблем.
 

Form

Client
Регистрация
05.09.2020
Сообщения
335
Благодарностей
125
Баллы
43
Проблема в том, что потом нужно сравнить этот список строк с другим (более мелким, тысяч на 5) и выявить несоответствия
 

Yuriy Zymlex

Moderator
Команда форума
Регистрация
24.10.2016
Сообщения
6 664
Благодарностей
3 441
Баллы
113
Используйте базу данных, так проще и легче.

Но если что, с такими списками можно работать в C# через ограниченный буфер памяти, что правда увеличит время, но сделает работу адекватной.
Можно заказать в платном разделе, как вариант.
 

finista

Client
Регистрация
10.10.2012
Сообщения
376
Благодарностей
62
Баллы
28
Был опыт 50 млн. строк. Разделил на 100к. В много поток в базу данных. Каждому потоку свои 100к. Быстро получилось. Из базы потом быстрей делать выборки и др. ИИ подскажет как правильно индексы настроить.
 
  • Спасибо
Реакции: Truelife

Sherminator

Client
Регистрация
10.09.2021
Сообщения
1 607
Благодарностей
924
Баллы
113
Такой список в память грузить как будто бы жестко, наверно надо его потоково сначала в файл записать а потом так же потоково сравнивать. Типа каждые 100к строк в файл сохранять что бы в памяти всё не держать


Тип такого запись делать в файл каждые 100к:
var list = new List<string>(); // 100k строк типа

using var fs = new FileStream("output.txt", FileMode.Append, FileAccess.Write,
                              FileShare.None, 8192, FileOptions.SequentialScan);
using var writer = new StreamWriter(fs);

foreach (var line in list)
    writer.WriteLine(line);
 
Последнее редактирование:

Form

Client
Регистрация
05.09.2020
Сообщения
335
Благодарностей
125
Баллы
43
Простым языком, что мне сейчас делать, в списке 71 мл строк, куда мне его деть? Мне нужно чтобы он был цельным, иначе теряется смысл всей затеи
Увеличивать память нет смысла, проблема не в ней, куда хоть копать?
 

Form

Client
Регистрация
05.09.2020
Сообщения
335
Благодарностей
125
Баллы
43
Что нужно чтобы обрабатывать такие масcивы? У меня двухколовый 2699 v3, 64 серверной оперативки, но такой масив сохранить не может, выдаёт ошибку после 7 секунд
 
Последнее редактирование:

Sherminator

Client
Регистрация
10.09.2021
Сообщения
1 607
Благодарностей
924
Баллы
113
Простым языком, что мне сейчас делать, в списке 71 мл строк, куда мне его деть? Мне нужно чтобы он был цельным, иначе теряется смысл всей затеи
Увеличивать память нет смысла, проблема не в ней, куда хоть копать?
Сначала его надо сохранить, либо в файл способ как я выше написал, либо в БД как выше написали, после сохранения будем решать вопрос по обработке
 
  • Спасибо
Реакции: Form

Form

Client
Регистрация
05.09.2020
Сообщения
335
Благодарностей
125
Баллы
43
Сначала его надо сохранить, либо в файл способ как я выше написал, либо в БД как выше написали, после сохранения будем решать вопрос по обработке
Понял вас, сегодня уже поздно, завтра вернусь и пробну
 

deukech

Client
Регистрация
11.09.2014
Сообщения
219
Благодарностей
142
Баллы
43
я бы поставил какой-нибудь mysql workbench, запихал в бд всё это безобразие, и уже зенкой можно отправлять select из мелкого списка, но не все 5к сразу, думаю, по кускам.
 

SRHTEDHJ

Новичок
Регистрация
20.03.2024
Сообщения
4
Благодарностей
0
Баллы
1
Скачай и установи HeidiSQL потом экспортируй с текстового документа в таблицу

Сейчас с плюсом при установке этого клиента ставится локальный сервак mariadb, если этого не произойдет тогда установи плюсом https://mariadb.org/download
 

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)