Как выпустить возможные блокировки строки Пост-ГРЭС?

Вы также можете использовать HSL, доступный в любом хорошем браузере ( http://caniuse.com/#feat=css3-colors )

function randomHsl() {
    return 'hsla(' + (Math.random() * 360) + ', 100%, 50%, 1)';
}

Это даст вам только яркие цвета, вы можете поиграть с яркостью, насыщенностью и альфа.

// es6
const randomHsl = () => `hsla(${Math.random() * 360}, 100%, 50%, 1)`

35
задан Liam 30 June 2009 в 10:50
поделиться

2 ответа

Какая версия PostgreSQL у вас установлена? Следующее предполагает 8.1.8 или новее (это может относиться и к более ранним версиям, я не знаю).

Я предполагаю, что вы имеете в виду, что истекло время ожидания phpPgAdmin - серверная часть PostgreSQL займет столько времени, сколько потребуется для завершения запрос / обновление. В этом случае возможно, что исходный сеанс все еще активен, а запрос UPDATE все еще выполняется. Я предлагаю выполнить следующий запрос (взятый из главы 24 документации PostgreSQL ) на машине, на которой размещен процесс сервера PostgreSQL, чтобы проверить, активен ли еще сеанс:

ps auxwww|grep ^postgres

Должно появиться несколько строк: 1 для главного процесса postmaster и по 1 для процессов «писатель», «буфер статистики» и «сборщик статистики». Остальные строки предназначены для процессов, обслуживающих соединения с БД. Эти строки будут содержать имя пользователя и имя базы данных.

Надеюсь, отсюда вы сможете увидеть, продолжается ли сеанс, в котором вы выполнили исходное ОБНОВЛЕНИЕ. Хотя теоретически вы можете найти более подробную информацию, выполнив SELECT в системном представлении pg_stat_activity , по умолчанию PostgreSQL не настроен для заполнения наиболее полезных полей (таких как current_query и query_start ). О том, как включить это в будущем, см. В главе 24.

Если вы видите, что сеанс все еще существует, завершите его. Вам нужно будет войти в систему как пользователь, запускающий процесс (обычно postgres ) или root, чтобы сделать это - если вы не запускаете сервер самостоятельно, попросите администратора базы данных сделать это за вас.

Еще одно: для обновления строк в таблице PostgreSQL избегает использования блокировок. Вместо этого он позволяет каждой записывающей транзакции создавать новую «версию» БД, которая становится «текущей версией», когда транзакция фиксируется, при условии, что она не конфликтует с обновлениями, сделанными в это время другими транзакциями. Так что я подозреваю, что "зависание", которое вы видите, вызвано чем-то другим - хотя чем, я не уверен. (Вы проверили очевидные вещи, например, заполнен ли раздел диска, содержащий БД?)

t конфликтует с обновлениями, сделанными в это время другими транзакциями. Так что я подозреваю, что "зависание", которое вы видите, вызвано чем-то другим - хотя чем, я не уверен. (Вы проверили очевидные вещи, например, заполнен ли раздел диска, содержащий БД?)

t конфликтует с обновлениями, сделанными в это время другими транзакциями. Так что я подозреваю, что "зависание", которое вы видите, вызвано чем-то другим - хотя чем, я не уверен. (Вы проверили очевидные вещи, например, заполнен ли раздел диска, содержащий БД?)

21
ответ дан 27 November 2019 в 06:27
поделиться

Я никогда не работал с PostreSql, но если он похож на другие, я бы сказал, что вам нужно отключить соединение / завершить транзакцию, удерживающую блокировки.

-3
ответ дан 27 November 2019 в 06:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: