Готовый перевод Coder Lee Yongho / Кодер Ли Ёнхо: Глава 8

Глава 8. Регистрация на курсы (3)

Это был второй повторный запуск БД из-за той же самой ошибки. Программа RDBMS (система управления реляционными базами данных) по-прежнему занимает более 90% памяти на сервере. Если бы это продолжалось недолго, то это нормально, но проблема заключалась в том, что все зависнет, когда память заполнится на 100%.

«Хён, разве это нормально, перезапускать ни с того ни с сего?»

«Нет».

«Я не думаю, что это правильно».

«Я тоже... Я такого же мнения».

* дзинь * * дзинь * (звонок телефона)

Телефоны в конференц-зале начали звонить, не переставая. Это были жалобы от студентов, у которых зависла страница.

«Когда я могу зарегистрироваться на курсы снова?»

«Скоро мы все исправим».

«Такое произошло не только у меня, да?»

«Да. Это произошло у всего 3-го курса. Так что не переживайте».

Студентов заботила только одна вещь:

Я единственный, у кого возникла такая проблема? В то время как страница зависла, не займут ли мое место на курсе? – Они беспокоятся об этом.

«Хм...»

Даже сейчас, когда он отвечал на звонки, Ёнхо был сосредоточен на чем-то другом. Он проверял систему через окно багов. Но со стороны выглядело, как будто он просто бродил.

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

«Не говори так, Сумин».

«Я не могу понять, почему Сонгю-сонбэ защищает такого, как он».

«Но он хороший!»

«Хороший? Не видела, как он сидел в одних трусах в клубной комнате?»

Из-за слов Сумин лицо Хеджин покраснело. Она сменила тему.

«Е...Еще звонок, я отвечу».

Хеджин быстро схватила телефон. Ёнхо, сосредоточенный на окне багов, слышал их разговор. Если кто-то говорил в этом зале размером 5 пён (≈16.5 кв.м.), невозможно было не услышать.

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

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

«Но в любом случае, строка 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.

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

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

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

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

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

«Вы меня не слышали? Просто идите и проводите мониторинг».

Сонгю даже не дали договорить до конца.

http://tl.rulate.ru/book/587/13322

Обсуждение главы:

Всего комментариев: 3
#
Спасибо, очень интересно)))
Развернуть
#
Из за такого отношения старших к младшим у корейцев часто падали пассажирские самолеты. Им пришлось вводить специальные курсы для пилотов, чтобы чинопочитание не приводило к катастрофам.
Развернуть
#
И паромы тонули. Хотя там скорее команда побоялась лицо потерять емнип.
Развернуть
Чтобы оставлять комментарии Войдите или Зарегистрируйтесь