|
|
|
JPA и наследование
|
|||
|---|---|---|---|
|
#18+
llemingПример к реальной жизни имеет малое отношение. +1 и к теме про JPA тоже ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2016, 10:45 |
|
||
|
JPA и наследование
|
|||
|---|---|---|---|
|
#18+
llemingэто в качестве нормы для сложного запроса прогнать expain (analyze, timing). Если хотите узнать сколько будет читаться при этом блоков то Код: plsql 1. И можно будет увидеть " Buffers: shared hit=53" а это значит что 53 * 8 = 424Kb Код: plsql 1. результат 424Kb Цифры соотвествуют если у вас тысяча записей всего и т.к. никаких toast нет таблиц поскольку, данные сжимаются легко и непринужденно, такая таблица с 1000 записей у меня 424Kb весит и если у вас для postgres стоит по дефолту, вся умещается в кэше, о чем говорит shared hits. Нет, данные не "пожаты" и не в кеше, потому что в итоге все (5Gb) забито рандомом, а на виртуалке всего 1Gb памяти - врет прибор: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. ок, вот здесь верим, а вот здесь уже не верим: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. т.е. explain ограничивается чтением только заголовков, а не читает блоки полностью, точно такой же эффект при использовании octet_length: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. нужно заставлять explain читать данные, чтобы они хоть как-то были похожи на правду: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2016, 11:02 |
|
||
|
JPA и наследование
|
|||
|---|---|---|---|
|
#18+
нет не врет. основная таблица всего 770кб. поле a2 хранится в toast table в 5Gb Код: plsql 1. 2. Зачем здесь читать таблицу toast если эти данные не нужны? Достаточно прочитать 770Kb из кэша. Код: plsql 1. здесь быстро из за того что получить результат совсем необязательно читать данные, ведь у них нет получателя, а сколько байт в этом поле и так указано в метаданных. Вполне разумная оптимизация. В реале также и сделает postgres. Если и в реале и explain получаем одинаковый, всегда верный (наибыстрейшим способом) результат то как бэ в чем претензии? Код: plsql 1. Здесь явно нужно преобразовать данные. А для этого нужно их достать с диска. Код: plsql 1. здесь скорее всего планнер постарался. Раз нет получателя то необязательно и читать данные. (Это как раз интересный случай, возможно даже баг поинтересуюсь в соотвествующем чате.) Андрей Панфиловнужно заставлять explain читать данные, чтобы они хоть как-то были похожи на правду: нет. нужно читать что выводит explain и понимать почему так это произошло. результаты хорошие предсказуемые. все в порядке. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2016, 11:45 |
|
||
|
JPA и наследование
|
|||
|---|---|---|---|
|
#18+
llemingвсе в порядке.что именно в порядке-то? вот смотрите что получается: вы утверждаете, что в PostgreSQL производительность не зависит от projection (с оговоркой о широких колонках) я утверждаю, что кроме широких колонок существуют еще широкие таблицы, и на таких таблицах эффект падения производительности вполне может иметь место быть (т.е. я беру референсную СУБД и наблюдаю там описываемый эффект и предлагаю вам воспроизвести) вы берете прибор "explain", им что-то замеряете и получаете противоречивый (т.е. не соотносящийся с поведением референсной СУБД) результат я показываю, что ваши измерения были проведены не верно Наверное после этого следует провести измерения более правильным способом и убедиться в присутствии эффекта. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2016, 14:09 |
|
||
|
JPA и наследование
|
|||
|---|---|---|---|
|
#18+
Андрей Панфиловllemingвсе в порядке.что именно в порядке-то? вот смотрите что получается: вы утверждаете, что в PostgreSQL производительность не зависит от projection (с оговоркой о широких колонках) я утверждаю, что кроме широких колонок существуют еще широкие таблицы, и на таких таблицах эффект падения производительности вполне может иметь место быть (т.е. я беру референсную СУБД и наблюдаю там описываемый эффект и предлагаю вам воспроизвести) вы берете прибор "explain", им что-то замеряете и получаете противоречивый (т.е. не соотносящийся с поведением референсной СУБД) результат я показываю, что ваши измерения были проведены не верно Наверное после этого следует провести измерения более правильным способом и убедиться в присутствии эффекта. В порядке значит когда результат предсказуемый. Тогда вполне понятно что можно ожидать. А вот когда результат непонятный, непредсказуемый это плохо. Это значит что проблема есть и неизвестно какая. 1. Не зависит. С оговоркой в реальном мире и реальное падение производительности на реальных данных и даже в широких таблицах. 2. Существуют эффект падения незначительный, по сути соизмеримый с погрешностью измерения. Легко и просто нивелируемый словом Lazy при необходимости. 3. Я получил четкий, однозначный, предсказуемый результат. То что Вы не в состоянии осознать как пользоваться и интерпретировать результат expain, так читайте доки, у Postgres очень хорошая документация. 4. Не увидел где. Все верно в абсолюте. Я описал почему так происходит. Доки почему так проиходит можно найти на https://www.postgresql.org/docs/9.5/static/index.html ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2016, 14:54 |
|
||
|
JPA и наследование
|
|||
|---|---|---|---|
|
#18+
Если мы работаем с одной таблицей, то использование/неиспользование покрывающего индекса в запросе (что напрямую зависит от ширины выборки) дает рост производительности запроса в десятки раз минимум (на нормальных объемах данных). Если с несколькими - есть нюансы, но рост скорости на порядки также возможен. Здесь ширина выборки гораздо больше решает. Однако некоторым здесь это кажется несущественным моментом на который нужно забить, и вспоминать только тогда, когда репорты с боевых установок начнут приходить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2016, 15:27 |
|
||
|
JPA и наследование
|
|||
|---|---|---|---|
|
#18+
Локшин МаркЕсли мы работаем с одной таблицей, то использование/неиспользование покрывающего индекса в запросе (что напрямую зависит от ширины выборки) дает рост производительности запроса в десятки раз минимум (на нормальных объемах данных). Если с несколькими - есть нюансы, но рост скорости на порядки также возможен. Здесь ширина выборки гораздо больше решает. Однако некоторым здесь это кажется несущественным моментом на который нужно забить, и вспоминать только тогда, когда репорты с боевых установок начнут приходить. возможно даже не только делать покрывающие индексы но и рефакторить БД, приложение http://martinfowler.com/books/refactoringDatabases.html Только эти индексы не мантра которую чем больше повторяешь тем быстрее БД работает. Если навтыкать индексов в таблицу да еще foreing key в ней не один, то на инсертах и делетах БД начнет грустить и иногда печально посматривать в даль. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2016, 15:47 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=39329849&tid=2123600]: |
0ms |
get settings: |
6ms |
get forum list: |
15ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
134ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
51ms |
get tp. blocked users: |
1ms |
| others: | 196ms |
| total: | 419ms |

| 0 / 0 |
