В общем история такая.
Для тех, кто не знает, что такое SWAP — это механизм виртуальной памяти в Linux, при котором отдельные фрагменты памяти перемещаются из ОЗУ в так называемые области подкачки (swap area или swap space), расположенные на вторичном хранилище данных.
Был у меня системник 2 ядра, 6 гб ОЗУ (DDR2), ssd 128гб. Накатил туда Linux Debian 12, и как то не особо заморачивался воткнул SWAP 1гиг. Работало всё нормально изредко притормаживал только, пока не захотел системник сменить на ноутбук. Просто перекинул жёсткий с системника на ноутбук и всё заработало со всеми программами и пр.
Решил тут базу на PostgreSQL обкатать кол-во записей было в базе 4,5 млн. Подправил код под себя ну и дайка я хотя бы 1,5 млн. добавлю в базу одним запросом (INSERT INTO) как обычно... Кстати размер файла был примерно 200мб (текста). Ну и закидываю в PgAdmin запрос выполняю и начинается загруз кулера ноутбука на 100%. Минуты 2 и ноутбук висит жёстко. Мышь еле еле дергается и всё. В общем ради эксперимента оставил его на 6 часов. Нифига-завис наглухо. Кстати характеристика ноутбука H15-bs130ur в интернете можете глянуть если интересно по модели.
Дальше интереснее...
Ребутнул в общем ноут и поставил на него программу HTOP (аналог диспетчера задач под виндой). Начинаю смотреть процессы и сколько зажирают памяти и всё такое пр. Всё работает стабильно, пока не выполняю одним запросом добавление 1.5 млн. записей, в базу PSQL.
Можете увидеть на фото что памяти 8 гб и SWAP 1 гб. не справляются.
Что сделал дальше... Ну думаю дай ка я систему перенакачу и поставлю SWAP другой (тем более давно хотел почистить систему от всякого рода установленного хлама).
Замечу сразу. При выполнении каких-либо задач если вы столкнулись с зависанием системы. Не нужно всегда грешить, что не хватает ОЗУ или SWAP проблема может крыться в вашем железе (жёсткий под замену или битая плашка памяти)
Кстати по поводу размера SWAP на Linux рекомендуется ставить ОЗУх2. (З.Ы. Изначально выбирал SWAP на 1 гб. что бы жёсткий не убивать.
Ну да ладно.
Перенакатил систему поставил SWAP 16 гб., запускаю запрос на 1.5 млн. записей и барабанная дробь, ноутбук начинает грузить, я с нетерпением жду выполнения запроса. Сперва забилась вся ОЗУ, потом начинаю наблюдать, как постепенно забивается SWAP и получается, что SWAP забивается медленнее. Естественно так как 1гб в 16 раз меньше нового выделенного под него объёма. Ждал наверное минут 5 и через 5 минут SWAP забивается и ноутбук зависает :D.
Думаю дай ради интереса оставлю часа на 2. Пока сидел за вторым ноутбуком и работал, то ноутбук так и не отвис.
Подвисает сам жёсткий и падает. Возможно проблема в том, что в конфиге PostgreSQL не поставил ограничение на использование ОЗУ.
При работе с PostgreSQL настройте конфиг самой СУБД по использованию ОЗУ. Если в конфиге ограничений нет, то СУБД будет использовать - всю ОЗУ физическую которая будет установлена на железе. В общем информация в интернете по этому поводу есть. В конфиге у себя ставил 6 гб. при физических 8.
Что было сделано дальше...
В общем не стал больше мучать ноут и жесткий диск убивать.
Все 4.5 млн записей я разбил на участки по 300 строк на запрос и выполнил.
Результат добавления в базу 1.5 млн. записей составил 1 минута 50 секунд.
Удачных экспериментов.
Кому понравилась данная статья----->
Не забудьте подписаться на телеграмм каналы.