Выбрать главу

«Почему она меня так ненавидит?»

Ёнхо действительно не сделал ничего плохого. Кроме решения вопросов с едой и жильем, он не сделал ничего, чтобы он нем думали плохо.

«Но в любом случае, строка 107, т.е. где SQL (язык структурированных запросов, используемых в реляционной базе данных), запускается...»

Ёнхо посмотрел на подробности ошибки.

«Хм... Но что это значит?»

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

Название: Table Lock (блокировка таблицы).

Подробнее: Из-за команды SELECT FOR UPDATE произошла Table Lock. Из-за блокировки другие пользователи, пытающиеся получить доступ к связанной таблице, находятся в режиме ожидания, и это является причиной текущей ошибки.

Решение: Измените SELECT FOR UPDATE на SELECT FOR UPDATE WAIT 3, чтобы сессии других пользователей осуществлялись после примерно 3-х секунд.

«Мне нужно как-то сказать об этом».

Теперь Ёнхо знал, что за баг произошел. Но что-то связанное с SQL... это было исключением. Все, что он знал, было из курса по базам данных, который читали год назад.

«Надо как-то намекнуть об этом Сонгю-хёну».

Сначала он хотел бы подтвердить это у Сонгю. Даже сейчас память использовалась на 100%. Они смогли пообедать только после 2-х перезапусков.

Ёнхо тихо позвал Сонгю, который собирался войти в конференц-зал.

«Хён, подожди секунду».

«Что такое?»

«Просто давай поговорим секундочку».

«Зачем? Я сейчас занят».

«Это из-за этого. Мне нужно уточнить только один момент».

«Хён, случайно, ты не знаешь, что такое Table Lock?»

«Table Lock?»

«Да. Ты знаешь, как ошибка вытекает из строки 107?»

«Ну?»

«Оператор запроса (сокращенный вариант SQL, видимо), который выполняется в этой строке, содержит что-то, запускающее SELECT FOR UPDATE.»

«SELECT FOR UPDATE?»

«Я поискал об этом в Интернете и узнал, что это та же система используется для бронирования билетов в кинотеатрах. Кажется, мы используем её для системы регистрации на курсы.

«В этом проблема, ты думаешь?»

«Я обнаружил, что суть Table Lock такая: когда я использую таблицу, никто другой не может делать тоже самое. Если ты хочешь использовать её, то нужно подождать, пока я не закончу».

«Хм...»

«Поэтому пока я не закончу работать с таблицей, остальные будут ждать бесконечно долго».

«Так ты говоришь, память заполняется, потому что один человек не закончил работать с таблицей и другие люди ждут его?»

Казалось, что Сонгю получил представление о ситуации.

«Ты прав. Из-за ожидания скорость использования памяти продолжает увеличиваться все это время. Так что даже несмотря на то, что все прекрасно работает после перезапуска, память будет продолжать заполняться.

«У тебя есть идеи?»

«Чтобы избавиться от статуса ожидания, надо вставить запрос WAIT 3 для автоматического завершения сеансов пользователей».

«Это все было в Интернете?»

Сонгю был очень удивлен, слушая Ёнхо эти несколько минут. Он не знал об этих навыках Ёнхо.

«Ты знаешь? «Stack Overfly». Но на самом деле, я реально не знаю, что это значит...»

«Говоришь, Stack Overfly... я пользовался им. Давайте поговорим об этом с работником».

Stack Overfly (*пародия на Stack Overflow - популярная система вопросов и ответов о программировании).

Как крупнейший в мире веб-сайт вопросов и ответов он может похвастаться 1.7 миллионами пользователей и более 5 миллионами вопросов. Сонгю часто использовал его, когда работал с программами на подработке.

«Пойдем скорей».

Ёнхо последовал за Сонгю в офис поддержки студентов.

Уже много раз БД перезапускали. Все были измучены из-за звонков, которые обрушивались после каждого перезапуска.

«Простите, сэр, вы обнаружили проблему?»

Сонгю осторожно спросил помощника менеджера Ким Вонхо. Но ему не ответили. Помощник менеджера Ким по-прежнему смотрел на экран. Он просто что-то пробормотал.

«Вот дерьмо... Почему оно не работает».

«Помощник менеджера Ким».

«Нет никаких проблем со строкой 107».

Помощник менеджера Ким продолжал смотреть на протокол сервера. В протоколе было сказано, что ошибка происходит в строке 107.

«ПОМОЩНИК МЕНЕДЖЕРА КИМ!»

Когда Сонгю говорил тихо, помощник его не слышал. Поэтому Сонгю позвал его громче. Наконец, помощник менеджера Ким обернулся к Сонгю.

«Я занят, поговорим позже».

Он обращался к Сонгю, как будто он его не существует. Он не думал, что студент колледжа поймет что-то из этого.

«Я посмотрел протокол, и думаю, что это из-за блокировки таблицы».