Как установить значение wait_timeout в postgresql как в MySQL? - PullRequest
1 голос
/ 28 мая 2019

Я использую Postgresql (9.6.3), и мне нужно установить значение для переменной Wait_timeout. Но я не нахожу ответов, относящихся к этой или другим эквивалентным переменным, которые можно использовать в Postgresql вместо переменной wait_timeout в MySQL.

     long wait_time = 0;
     ResultSet rs = null;
     try {
        Statement st = con.createStatement();
        rs = st.executeQuery("show variables like 'wait_timeout'");
        if(rs.next())
            wait_time = rs.getLong("Value");
        rs.close();
    } catch (SQLException e) {
        logger.error(e);
    }        
// wait time in SQl is maintained in seconds whereas here we need 
milliseconds
     return (wait_time*1000)/2;

Я получаю нулевое значение в переменной resultSet после выполнения запроса. Я нашел переменную с именем Statement_timeout, но я не знаю, является ли она эквивалентной для нее или нет, так как она может повлиять на все другие сеансы, где, как в случае wait_timeout в MySQL, это не так. Пожалуйста, предложите мне лучшее решение. Заранее спасибо.

1 Ответ

1 голос
/ 28 мая 2019

MySQL реализует много тайм-аутов (https://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html).

MySQL имеет:

  • wait_timeout - количество секунд, в течение которых сервер ожидает активности на неинтерактивном соединении, прежде чемзакрытие. Значение по умолчанию 28800s = 8 часов.
  • Аналогично "interactive_timeout" - количество секунд, в течение которых сервер ожидает активности на интерактивном соединении, прежде чем закрывать его.

В настоящее время PostgreSQLhas:

  • "Statement_timeout" - прервать любой оператор, который занимает больше указанного количества миллисекунд, начиная с момента, когда команда прибывает на сервер от клиента.
  • "idle_in_transaction_session_timeout"- Завершить любой сеанс с открытой транзакцией, которая простаивала дольше указанной длительности в миллисекундах.

(https://www.postgresql.org/docs/11/runtime-config-client.html)

См., Например, здесь - https://dba.stackexchange.com/questions/164419/is-it-possible-to-limit-timeout-on-postgres-server

Если честно, мне пока не нужно было возиться с этими тайм-аутами в MySQL, кроме «connect_timeout».Поэтому я не могу дать вам прямой совет по этому поводу.Но, возможно, вам нужно "idle_in_transaction_session_timeout".

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...