powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / работа с диском
6 сообщений из 6, страница 1 из 1
работа с диском
    #39799815
qwwq
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
налил в табличку миллиард записей. не индексировал.
считаю первые 10лямов (для оценки скорости чтения):

буферсы
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
 Aggregate  (cost=279054.05..279054.06 rows=1 width=8) (actual time=84834.254..84834.255 rows=1 loops=1)
   Buffers: shared hit=7 read=54048 dirtied=53788 written=53756
   ->  Limit  (cost=0.00..154054.05 rows=10000000 width=4) (actual time=0.029..78972.353 rows=10000000 loops=1)
         Buffers: shared hit=7 read=54048 dirtied=53788 written=53756
         ->  Seq Scan on paperfieldsofstudy  (cost=0.00..16046209.96 rows=1041596096 width=4) (actual time=0.025..68234.772 rows=10000000 loops=1)
               Buffers: shared hit=7 read=54048 dirtied=53788 written=53756
 Planning time: 0.398 ms
 Execution time: 84834.304 ms
---------------------------------------------------------------------------------------------------------------------------------------------------
-- repeat------------------------
 Aggregate  (cost=279054.05..279054.06 rows=1 width=8) (actual time=85126.172..85126.173 rows=1 loops=1)
   Buffers: shared hit=7 read=54048 dirtied=53743 written=53712
   ->  Limit  (cost=0.00..154054.05 rows=10000000 width=4) (actual time=0.066..79217.596 rows=10000000 loops=1)
         Buffers: shared hit=7 read=54048 dirtied=53743 written=53712
         ->  Seq Scan on paperfieldsofstudy  (cost=0.00..16046209.96 rows=1041596096 width=4) (actual time=0.062..68396.738 rows=10000000 loops=1)
               Buffers: shared hit=7 read=54048 dirtied=53743 written=53712
 Planning time: 0.437 ms
 Execution time: 85126.244 ms
(8 строк)



как правильно считать скорость доступа ? только по read или dirted и written тоже ?
а то как то маловато получается 5МБ/с да и 15 тоже маловато для последовательного доступа будет.
(хотя там, на сервере ещё минимум один процесс непрерывно чтит и пишет. в тех же объёмах примерно. сутками)

нет ?
сколько в норме hdd дают ? 85-150 ??
или я что-то путаю ?

и поможет ли фриз с dirted-ами ?
и что оно все время written ?

--в иостат не могу. одни 0-ли вижу.
...
Рейтинг: 0 / 0
работа с диском
    #39799819
Фотография Maxim Boguk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
qwwqналил в табличку миллиард записей. не индексировал.
считаю первые 10лямов (для оценки скорости чтения):

буферсы
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
 Aggregate  (cost=279054.05..279054.06 rows=1 width=8) (actual time=84834.254..84834.255 rows=1 loops=1)
   Buffers: shared hit=7 read=54048 dirtied=53788 written=53756
   ->  Limit  (cost=0.00..154054.05 rows=10000000 width=4) (actual time=0.029..78972.353 rows=10000000 loops=1)
         Buffers: shared hit=7 read=54048 dirtied=53788 written=53756
         ->  Seq Scan on paperfieldsofstudy  (cost=0.00..16046209.96 rows=1041596096 width=4) (actual time=0.025..68234.772 rows=10000000 loops=1)
               Buffers: shared hit=7 read=54048 dirtied=53788 written=53756
 Planning time: 0.398 ms
 Execution time: 84834.304 ms
---------------------------------------------------------------------------------------------------------------------------------------------------
-- repeat------------------------
 Aggregate  (cost=279054.05..279054.06 rows=1 width=8) (actual time=85126.172..85126.173 rows=1 loops=1)
   Buffers: shared hit=7 read=54048 dirtied=53743 written=53712
   ->  Limit  (cost=0.00..154054.05 rows=10000000 width=4) (actual time=0.066..79217.596 rows=10000000 loops=1)
         Buffers: shared hit=7 read=54048 dirtied=53743 written=53712
         ->  Seq Scan on paperfieldsofstudy  (cost=0.00..16046209.96 rows=1041596096 width=4) (actual time=0.062..68396.738 rows=10000000 loops=1)
               Buffers: shared hit=7 read=54048 dirtied=53743 written=53712
 Planning time: 0.437 ms
 Execution time: 85126.244 ms
(8 строк)



как правильно считать скорость доступа ? только по read или dirted и written тоже ?
а то как то маловато получается 5МБ/с да и 15 тоже маловато для последовательного доступа будет.
(хотя там, на сервере ещё минимум один процесс непрерывно чтит и пишет. в тех же объёмах примерно. сутками)

нет ?
сколько в норме hdd дают ? 85-150 ??
или я что-то путаю ?

и поможет ли фриз с dirted-ами ?
и что оно все время written ?

--в иостат не могу. одни 0-ли вижу.

1)dirtied - это простановка hint bits.... поможет 1 раз вычитать таблицу (ну например через select count(*) или copy to /dev/null)
2)вероятнее всего второй раз вы другие 10 лямов вычитали потому и dirtied опять пошли
3)когда hint bits проставятся по всей таблице - будет быстрее вероятнее всего
4)что самое смешное - высокая вероятность того что вы в скорость работы одного ядра CPU уперлись (как раз 15MB/s там часто и получается)... ставьте 9.6(а лучше 11) и включайте паралельное выполнение запросов во много потоков и будет легче
5)лучше гоняйте на 100M строк более стабильные результаты будут
6)очень помогает включить track_io_timing в конфиге базы и делать explain (analyze, costs, buffers, timing) чтобы видеть что на cpu ушло а что на IO
...
Рейтинг: 0 / 0
работа с диском
    #39799826
qwwq
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Maxim Boguk,

снкс,
примерно так и думал. запустил фриз. видимо надолго. но на 10 лямах уже вижу :
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
                                                                    QUERY PLAN                                                                    
--------------------------------------------------------------------------------------------------------------------------------------------------
 Aggregate  (cost=279054.05..279054.06 rows=1 width=8) (actual time=21919.436..21919.437 rows=1 loops=1)
   Buffers: shared hit=14 read=54041
   ->  Limit  (cost=0.00..154054.05 rows=10000000 width=4) (actual time=0.027..16219.568 rows=10000000 loops=1)
         Buffers: shared hit=14 read=54041
         ->  Seq Scan on paperfieldsofstudy  (cost=0.00..16046209.96 rows=1041596096 width=4) (actual time=0.023..5779.394 rows=10000000 loops=1)
               Buffers: shared hit=14 read=54041
 Planning time: 179.265 ms
 Execution time: 21919.498 ms


что-то около 20МБ/с , если не вру

//стоит 10.7.
//гоняю принципиально однопоточный запрос (селект каунт из селект-лимита).
//думаю в гин-подобие данные переложить (или в 2) -- оно чуть покомпактнее будет.
//да и памяти там нема тоже. сравнительно с объёмами, конечно.
...
Рейтинг: 0 / 0
работа с диском
    #39799828
qwwq
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ps: + 21626536
...
Рейтинг: 0 / 0
работа с диском
    #39800072
qwwq
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Maxim Boguk...
6)очень помогает включить track_io_timing в конфиге базы и делать explain (analyze, costs, buffers, timing) чтобы видеть что на cpu ушло а что на IO

а как трактовать например такое :
Код: sql
1.
2.
3.
4.
5.
Finalize Aggregate  (cost=12853.26..12853.27 rows=1 width=8) (actual time=641.949..641.950 rows=1 loops=1)
  Output: count(*)
  Buffers: shared read=7685
  I/O Timings: read=1467.187
  ->  Gather  (cost=12853.04..12853.25 rows=2 width=8) (actual time=641.783..651.597 rows=3 loops=1)


т.е. i/o t >> summary ?
(2 воркера -- 3 смычка)

непонятки2. для ios на локалке для Buffers: read~ 100 000 [805M] получил I/O Timings: read ~ 500 [ms?] . hdd. как-то слишком быстро . нет ? или это из кеша os/винта так летает ? (на агрегирование 37.6 лямов ушло еще ~ 4000ms)
...
Рейтинг: 0 / 0
работа с диском
    #39800083
Melkij
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
qwwqа как трактовать например такое :
Код: sql
1.
2.
3.
4.
5.
Finalize Aggregate  (cost=12853.26..12853.27 rows=1 width=8) (actual time=641.949..641.950 rows=1 loops=1)
  Output: count(*)
  Buffers: shared read=7685
  I/O Timings: read=1467.187
  ->  Gather  (cost=12853.04..12853.25 rows=2 width=8) (actual time=641.783..651.597 rows=3 loops=1)


т.е. i/o t >> summary ?
(2 воркера -- 3 смычка)
Именно потому что 3 потока использовали диск. I/O Timings здесь - сумма ожидания по всем троим. А что ещё писать? Максимум от одного потока? Среднее? Массив из всех?

qwwq2. для ios на локалке для Buffers: read~ 100 000 [805M] получил I/O Timings: read ~ 500 [ms?] . hdd. как-то слишком быстро . нет ? или это из кеша os/винта так летает ? (на агрегирование 37.6 лямов ушло еще ~ 4000ms)
page cache системы вполне. I/O Timings строго говоря - время выполнения smgrread . То есть время получения блока из файла. А уж дошёл запрос до физического диска или был обслужен каким кешом по пути - кто его разберёт.
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / работа с диском
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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