powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / как прочитать данные из таблицы, когда идут INSERT?
15 сообщений из 15, страница 1 из 1
как прочитать данные из таблицы, когда идут INSERT?
    #34693847
Winnipuh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
клиентское приложение активно пишет в таблицу, я хочу одновременно иметь приблизительное количество запсией в таблице
Выполняю запрос, но вижу, что он не сразу выполняется.

select count(*) from mytable

Есть ли аналог как в mssql server

select count(*) from mytable with(nolock)

?
...
Рейтинг: 0 / 0
как прочитать данные из таблицы, когда идут INSERT?
    #34693894
Фотография pamir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Winnipuhклиентское приложение активно пишет в таблицу, я хочу одновременно иметь приблизительное количество запсией в таблице
Выполняю запрос, но вижу, что он не сразу выполняется.

select count(*) from mytable

Есть ли аналог как в mssql server

select count(*) from mytable with(nolock)

?запрос на чтение в постгресе не лочит ничего.
...
Рейтинг: 0 / 0
как прочитать данные из таблицы, когда идут INSERT?
    #34693908
Winnipuh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pamir Winnipuhклиентское приложение активно пишет в таблицу, я хочу одновременно иметь приблизительное количество запсией в таблице
Выполняю запрос, но вижу, что он не сразу выполняется.

select count(*) from mytable

Есть ли аналог как в mssql server

select count(*) from mytable with(nolock)

?запрос на чтение в постгресе не лочит ничего.

так лочить может не он, а инсерт, а селект может ждать, как в мсскл. В том то и вопрос, как запросом прочитать пусть и грязные данные, но быстро
...
Рейтинг: 0 / 0
как прочитать данные из таблицы, когда идут INSERT?
    #34693971
Фотография pamir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Winnipuhтак лочить может не он, а инсерт, а селект может ждать, как в мсскл. Не может. Нечего ему ждать. Селект не лочит и не ждет ничего. Он читает то, что было на начало транзакции. А тормозит он может... просто от большой нагрузки?
...
Рейтинг: 0 / 0
как прочитать данные из таблицы, когда идут INSERT?
    #34693989
Paramedic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Присмотритесь к содержимому таблицы pg_stat_user_tables. Возможно это Вам поможет.
...
Рейтинг: 0 / 0
как прочитать данные из таблицы, когда идут INSERT?
    #34694948
v0v4ik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
1. если клиентское приложение одно, то зачем дергать таблицу? Перед началом инсертов узнал количество и в конце операции + вставленые записи
2. если клиентское приложений несколько и в одной транзакции одна или мало записей, делай обычный select count(*)... только не часто, чтобы не тормозить
3. если в одной транзакции очень много записей, то читай грязные данные
BEGIN
SET TRANSACTION ISOLATION LEVEL Read uncommitted;
select count(*)...;
COMMIT
...
Рейтинг: 0 / 0
как прочитать данные из таблицы, когда идут INSERT?
    #34696224
Funny_Falcon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
v0v4ik 1. если клиентское приложение одно, то зачем дергать таблицу? Перед началом инсертов узнал количество и в конце операции + вставленые записи
2. если клиентское приложений несколько и в одной транзакции одна или мало записей, делай обычный select count(*)... только не часто, чтобы не тормозить
3. если в одной транзакции очень много записей, то читай грязные данные
BEGIN
SET TRANSACTION ISOLATION LEVEL Read uncommitted;
select count(*)...;
COMMIT
PostgreSQL не предоставляет возможности читать "грязные" данные.READ UNCOMMITTED - преобразуется в READ COMMITTED
...
Рейтинг: 0 / 0
как прочитать данные из таблицы, когда идут INSERT?
    #34696248
v0v4ik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Funny_Falcon v0v4ik 1. если клиентское приложение одно, то зачем дергать таблицу? Перед началом инсертов узнал количество и в конце операции + вставленые записи
2. если клиентское приложений несколько и в одной транзакции одна или мало записей, делай обычный select count(*)... только не часто, чтобы не тормозить
3. если в одной транзакции очень много записей, то читай грязные данные
BEGIN
SET TRANSACTION ISOLATION LEVEL Read uncommitted;
select count(*)...;
COMMIT
PostgreSQL не предоставляет возможности читать "грязные" данные.READ UNCOMMITTED - преобразуется в READ COMMITTED
Вы наверное что-то путаете. Смотрите мануал, в часности п.12
PS. Я не стал бы утверждать то что не проверил на практике.
...
Рейтинг: 0 / 0
как прочитать данные из таблицы, когда идут INSERT?
    #34696739
Andrey Daeron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
v0v4ik
Вы наверное что-то путаете. Смотрите мануал, в часности п.12
PS. Я не стал бы утверждать то что не проверил на практике.

Согласен с Вашим оппонентом.
Цитата:
Код: plaintext
1.
But internally, there are only two distinct isolation levels, which correspond to the levels Read Committed and Serializable. 
где-то здесь под таблицей
...
Рейтинг: 0 / 0
как прочитать данные из таблицы, когда идут INSERT?
    #34697167
Paramedic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Read Uncommited преобразуется в Read Commited, а Repeatable read в Serializable

PostgreSQL поддерживает всего два уровня изоляции транзакций.
...
Рейтинг: 0 / 0
как прочитать данные из таблицы, когда идут INSERT?
    #34707775
v0v4ik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Andrey Daeron v0v4ik
Вы наверное что-то путаете. Смотрите мануал, в часности п.12
PS. Я не стал бы утверждать то что не проверил на практике.

Согласен с Вашим оппонентом.
Цитата:
Код: plaintext
1.
But internally, there are only two distinct isolation levels, which correspond to the levels Read Committed and Serializable. 
где-то здесь под таблицей
Действительно... Странно. Но у меня есть "место" где используются грязные данные(считается поле по незакомиченым данным. Если не ставмть read uncommited, будет NULL). Будет возможность и время - проверю все еще раз. Если интересно проверьте вы.
P.S. Postgres 8.1.4
...
Рейтинг: 0 / 0
как прочитать данные из таблицы, когда идут INSERT?
    #34710786
Andrey Daeron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
v0v4ik
Действительно... Странно. Но у меня есть "место" где используются грязные данные(считается поле по незакомиченым данным. Если не ставмть read uncommited, будет NULL). Будет возможность и время - проверю все еще раз. Если интересно проверьте вы.
P.S. Postgres 8.1.4
Проверил 8.2.4:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
Консоль1:
test=# BEGIN;
BEGIN
test=# INSERT INTO table1 (id) VALUES ( 1 );
INSERT  22128   1 

Консоль2:
test=# BEGIN;
BEGIN
test=# SET TRANSACTION ISOLATION LEVEL Read uncommitted;
SET
test=# SELECT * FROM table1;
 id
----
( 0  rows)

Консоль1:
test=# COMMIT;
COMMIT

Консоль2:
test=# SELECT * FROM table1;
 id
----
   1 
( 1  row)

Т.е. такого уровня нет. Точнее есть, но сводится к более изолированному.
Впрочем dirtyread для версионника - грустная штука. Там же этого dirty может быть много, для блокировщика - по идее проще.
...
Рейтинг: 0 / 0
как прочитать данные из таблицы, когда идут INSERT?
    #34714016
Winnipuh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
получается , что задержек не будет (как в мсскл), но и чтения грязных данных тоже не будет
...
Рейтинг: 0 / 0
как прочитать данные из таблицы, когда идут INSERT?
    #34714708
ilejn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Winnipuhполучается , что задержек не будет (как в мсскл), но и чтения грязных данных тоже не будет

Именно. И это (в большинстве случаев) очень хорошо.
...
Рейтинг: 0 / 0
как прочитать данные из таблицы, когда идут INSERT?
    #34714964
Winnipuh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ilejn Winnipuhполучается , что задержек не будет (как в мсскл), но и чтения грязных данных тоже не будет

Именно. И это (в большинстве случаев) очень хорошо.

с этим категорически согласен
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / как прочитать данные из таблицы, когда идут INSERT?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]