Форум программистов, компьютерный форум, киберфорум
C#: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
 Аватар для CyberAlfred
63 / 62 / 14
Регистрация: 16.12.2012
Сообщений: 606

Обращение к БД съедает память

06.03.2020, 08:00. Показов 1626. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день.

Имею самописный код программы, который как выяснилось, при каждой итерации по таймеру увеличивает объем занимаемой памяти.
Закомментировав
C#
1
SqlDataReader sqlProductItems = Sql_request(strProductItems, textBox2.Text);
Выяснил, что именно тут и съедается память.
В чем может быть проблема?
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
public static SqlDataReader Sql_request(string str, string Path)
        {
            string connect_string = Path;
 
            //Создание объекта для соединения
            SqlConnection sql_connect = new SqlConnection(connect_string);
            //Открытие соединения с БД
            SqlConnection.ClearAllPools();
            if (sql_connect.State == ConnectionState.Open)
                sql_connect.Close();
            else
                sql_connect.Open();
 
            SqlCommand cmd = new SqlCommand();
            cmd.CommandType = CommandType.Text;
            cmd.Connection = sql_connect;
            cmd.CommandText = str;
            return cmd.ExecuteReader();
 
        }
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
06.03.2020, 08:00
Ответы с готовыми решениями:

List, потоки. Съедает память
Всем привет. Написал приложение. Спасибо всем тут, кто помогал советами. Мое приложение работает в локальной сети. Посылает запросы...

Каждое обращение к MapViewOfFile съедает 4Кб ОЗУ
Первое приложение: MemoryMappedFile MemoryDeal = MemoryMappedFile.CreateNew("Deal", 51, MemoryMappedFileAccess.ReadWrite); Второе...

Lotus съедает память
Добрый день. Сервер lotus 5.0.8 Запуск в виде службы windows 2003 (E sp1) В течение времени происходит увеличение размера занимаемой...

9
управление сложностью
 Аватар для Почтальон
1693 / 1306 / 259
Регистрация: 22.03.2015
Сообщений: 7,545
Записей в блоге: 5
06.03.2020, 08:21
А что в переменной str передается ?
0
 Аватар для CyberAlfred
63 / 62 / 14
Регистрация: 16.12.2012
Сообщений: 606
06.03.2020, 08:29  [ТС]
Почтальон, сгенерированный sql запрос, который состоит из одного insert

Забыл добавить что, имеется while {} в котором генерируется этот запрос, пока весь массив не пройдет.

Добавлено через 48 секунд
C#
1
2
3
4
5
while {
...blablabla....
SqlDataReader sqlProductItems = Sql_request(strProductItems, textBox2.Text);
 
}
0
управление сложностью
 Аватар для Почтальон
1693 / 1306 / 259
Регистрация: 22.03.2015
Сообщений: 7,545
Записей в блоге: 5
06.03.2020, 08:32
Ну все верно, лавинообразное поведение. Кто же в цикле формирует запросы то ?? Сформировали один - дождались исполнения, беретесь за следующий.
0
 Аватар для CyberAlfred
63 / 62 / 14
Регистрация: 16.12.2012
Сообщений: 606
06.03.2020, 08:45  [ТС]
Почтальон, так я в цикле обрабатываю каждый элемент массива отдельно, формирую строку, которую мне надо выполнить на базе и затем перехожу к следующему элементу массива. Как мне не в цикле выполнять запрос?

Можно конечно в цикле сформировать один конечный результат строки для базы, но хотелось бы, каждый элемент массива отдельно запсиывать.
0
управление сложностью
 Аватар для Почтальон
1693 / 1306 / 259
Регистрация: 22.03.2015
Сообщений: 7,545
Записей в блоге: 5
06.03.2020, 08:53
Лучший ответ Сообщение было отмечено CyberAlfred как решение

Решение

Цитата Сообщение от CyberAlfred Посмотреть сообщение
Можно конечно в цикле сформировать один конечный результат строки для базы
Так и должно быть. Выборка необходимых данных, и только потом их обработка.
Цитата Сообщение от CyberAlfred Посмотреть сообщение
хотелось бы, каждый элемент массива отдельно запсиывать
Это просто ваша "хотелка" или это требование? Можно и по отдельности, но нужно дождаться выполнения запроса, только потом переходить к следующей выборке.
0
 Аватар для CyberAlfred
63 / 62 / 14
Регистрация: 16.12.2012
Сообщений: 606
06.03.2020, 09:33  [ТС]
Почтальон, скорее требование, т.к. данные в массив берутся из внешней системы, которую разрабатывала сторонняя контора, которая не сделала проверку введенных пользователем данных.
0
управление сложностью
 Аватар для Почтальон
1693 / 1306 / 259
Регистрация: 22.03.2015
Сообщений: 7,545
Записей в блоге: 5
06.03.2020, 10:15
Ну тогда нужно обрабатывать каждый элемент массива (либо в отдельной задаче с ожиданием завершения, либо в основном потоке программы без вызова функции Sql_request (т.е. по сути, перенести код из этой функции в вызывающий код)
0
 Аватар для CyberAlfred
63 / 62 / 14
Регистрация: 16.12.2012
Сообщений: 606
06.03.2020, 10:19  [ТС]
Почтальон, ну я так и сделал. все нестроковые элементы обернул в try catch и сделал таким образом, что эти элементы пропускаются, но инфа по ним попадает в лог файл, который подтирается при каждом запуске программы, т.к. всё равно потом опять туда попадут
0
Эксперт .NET
 Аватар для Usaga
14313 / 9393 / 1355
Регистрация: 21.01.2016
Сообщений: 35,424
06.03.2020, 13:44
Цитата Сообщение от CyberAlfred Посмотреть сообщение
тут и съедается память.
Как это было определено?

Цитата Сообщение от CyberAlfred Посмотреть сообщение
//Открытие соединения с БД
SqlConnection.ClearAllPools();
if (sql_connect.State == ConnectionState.Open)
sql_connect.Close();
else
sql_connect.Open();
Так не надо делать. Ни пул очищать, ни постоянно открытое подключение держать. Открыли, вытащили данные, закрыли.
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
06.03.2020, 13:44
Помогаю со студенческими работами здесь

Приложение съедает память
Добрый день, форумчане. После запуска приложения, при каждом клике съедается 300кб. Не пойму за счет чего идет утечка памяти....

Что съедает оперативную память
При загрузки винды или во время работы, в диспетчере пишет, что оперативная память занята на 50-60% в то же время когда во вкладке...

Съедает память жесткого диска
Через раздел свойства системы показывает что на диске свободно 1837 Мб, а на вкладке Компьютер 140 Мб. При изменении файла подкачки пишет:...

Mbuffer bitmap съедает память
Приветствую, Есть маленькое приложение блокнот - ListActivity на основе BaseAdapter, читающего данные из файла, плюс еще пара activity с...

Что съедает оперативную память
При загрузки винды или во время работы, в диспетчере пишет, что оперативная память занята на 70-80% в то же время когда во вкладке...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита, которое может. . .
Команды "Заполнить" и "Очистить" на форме документа
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". На примере нетипового документа разработанного в конфигурации КА2. В качестве источника данных указан регистр накопления, в который записываются данные о. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru