|
|
|
JPA и наследование
|
|||
|---|---|---|---|
|
#18+
head_read читать как heap_read ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2016, 14:41 |
|
||
|
JPA и наследование
|
|||
|---|---|---|---|
|
#18+
llemingможно создать таблицу где tuple должен поместиться в 8Kb, если есть large fields и tuple больше 8Kb то его выкинет в toast table. Если нет large fields то создать таблицу где tuple превысит 8Kb думаю не получится (а оно зачем в таблице иметь больше сотни колонок)Ну вот у меня создает без проблем, 250 же не много совсем? (в DB2, к примеру так не получится - она заставит создавать таблицу в табличном пространстве с увеличенным размером блока, в Oracle можно или в другом табличном пространстве создавать или получить row chaining): Код: sql 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. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. При этом про "сотню колонок" вы слегка лукавите, мы же не 90-х живем, и однобайтовые кодировки, слава богу, умерли, поэтому на utf8 блок в 8K превращается всего 4K символов (+/- служебная информация), а с utf16 вообще все печально получается. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2016, 15:00 |
|
||
|
JPA и наследование
|
|||
|---|---|---|---|
|
#18+
Андрей Панфилов250 же не много совсем? все поля текст по 250 - не жизненно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2016, 15:17 |
|
||
|
JPA и наследование
|
|||
|---|---|---|---|
|
#18+
Андрей ПанфиловBlazkowiczВы о чем вообще???вам лучше знать, про "качественный, открытый к изменениям код и заложеная в архитектуру масштабируемость" писал же не я, соответственно и возник вопрос каким образом сужение projection влияет на качество кода. Продолжайте нести ахинею. Смотрите не расплескайте по дороге. Удачи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2016, 15:53 |
|
||
|
JPA и наследование
|
|||
|---|---|---|---|
|
#18+
Petro123все поля текст по 250 - не жизненно.При должном старании не проблема, однако посыл был несколько в другом, а именно в том, что при определенных условиях _в базе_ производительность-таки зависит от projection. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2016, 15:58 |
|
||
|
JPA и наследование
|
|||
|---|---|---|---|
|
#18+
BlazkowiczПродолжайте нести ахинею. Смотрите не расплескайте по дороге. Удачи.Не нужно так расстраиваться, просто покажите цифры как "ширина выборки не влияет на производительность", и делу конец. Какой смысл теоретизировать и высасывать умозаключения из пальца, если можно просто взять и измерить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2016, 16:01 |
|
||
|
JPA и наследование
|
|||
|---|---|---|---|
|
#18+
Андрей ПанфиловPetro123все поля текст по 250 - не жизненно.При должном старании не проблема, однако посыл был несколько в другом, а именно в том, что при определенных условиях _в базе_ производительность-таки зависит от projection. на величину не сильно отличающуюся от нуля ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2016, 16:06 |
|
||
|
JPA и наследование
|
|||
|---|---|---|---|
|
#18+
Андрей ПанфиловНе нужно так расстраиваться, просто покажите цифры как "ширина выборки не влияет на производительность", и делу конец. Какой смысл теоретизировать и высасывать умозаключения из пальца, если можно просто взять и измерить? Да, кто же расстраивается. Я просто больше не вижу смысла именно Вам что-то объяснять. У Вас в каждом сообщении факты вперемешку с чушью. Тратить время на выуживания ценной информации из потока вашего бреда надоело. Приплели какой-то @Embedded к архитектуре. С такой кашей в голове бесполезно соревноваться. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2016, 16:07 |
|
||
|
JPA и наследование
|
|||
|---|---|---|---|
|
#18+
llemingна величину не сильно отличающуюся от нулятолько не в абстрактном PostgreSQL, а в вашей базе, на вашей схеме, на ваших данных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2016, 16:08 |
|
||
|
JPA и наследование
|
|||
|---|---|---|---|
|
#18+
BlazkowiczДа, кто же расстраивается. Я просто больше не вижу смысла именно Вам что-то объяснять. У Вас в каждом сообщении факты вперемешку с чушью. Тратить время на выуживания ценной информации из потока вашего бреда надоело. Приплели какой-то @Embedded к архитектуре. С такой кашей в голове бесполезно соревноваться.Что значит какой-то? Это часть JPA-спецификации, чтобы не fetch=FetchType.LAZY у каждого поля ставить и таскаться с этим мусором, а выделить группу полей в отдельную сущность. Это вы "прилепили" "качественный, открытый к изменениям код и заложеная в архитектуру масштабируемость" к количеству колонок в projection, и каким образом это прилепилось выяснить так и не удалось. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2016, 16:17 |
|
||
|
JPA и наследование
|
|||
|---|---|---|---|
|
#18+
Андрей Панфиловllemingна величину не сильно отличающуюся от нулятолько не в абстрактном PostgreSQL, а в вашей базе, на вашей схеме, на ваших данных. А зачем мне оптимизировать абстрактную БД которая только у вас в голове и доступ к ней только у вас. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2016, 16:22 |
|
||
|
JPA и наследование
|
|||
|---|---|---|---|
|
#18+
llemingА зачем мне оптимизировать абстрактную БД которая только у вас в голове и доступ к ней только у вас.Это ваши слова? llemingоб этом уже говорилось что чтение построчное (Postgres) разницы нет для DB читать одну колонку или все сразу ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2016, 16:28 |
|
||
|
JPA и наследование
|
|||
|---|---|---|---|
|
#18+
Да. А что там не так? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2016, 16:32 |
|
||
|
JPA и наследование
|
|||
|---|---|---|---|
|
#18+
lleming, будет разница в производительность между чтением всех колонок из таблицы и только тех, что не попали в TOAST (мы вроде как выяснили что в TOAST попадают не только совсем уж здоровые колонки, а вообще все что в 8K блок не поместилось)? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2016, 16:40 |
|
||
|
JPA и наследование
|
|||
|---|---|---|---|
|
#18+
Андрей Панфиловlleming, будет разница в производительность между чтением всех колонок из таблицы и только тех, что не попали в TOAST (мы вроде как выяснили что в TOAST попадают не только совсем уж здоровые колонки, а вообще все что в 8K блок не поместилось)? это мы не выяснили, это вы так поняли. (вообще почитайте ссылку которую вы привели про toast таблицы) так я вам привел пример реальные цифры. в тоаст попадает только одня таблица их нескольких сотен. паттерн ее использования говорит что не особо то даже из toast читается только наиболее длинные записи коих в процентном соотншении немного. уменьшать выборку колонок там уже некуда. Т.е. разница возможно и есть, но никто ее не видел и измерить тоже не удается. PS. Оптимизация абстрактных БД (600р/ч) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2016, 16:56 |
|
||
|
JPA и наследование
|
|||
|---|---|---|---|
|
#18+
llemingТ.е. разница возможно и есть, но никто ее не видел и измерить тоже не удается. Почему не удается? Вот я беру оракл и специально делаю широкую таблицу, чтобы ее строки попадали в несколько блоков: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. Чтение только первой колонки: Код: sql 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. 27. 28. 29. 30. 31. 32. чтение всех колонок: Код: sql 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. 27. 28. 29. 30. чтение колонок из разных блоков: Код: sql 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. 27. 28. 29. 30. Разница есть, и я бы не сказал что она несущественная. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2016, 17:37 |
|
||
|
JPA и наследование
|
|||
|---|---|---|---|
|
#18+
Андрей ПанфиловРазница есть, и я бы не сказал что она несущественная.Смотрим в плане колонки стоимости: проц и время - одинаковы во всех вариантах. За килобайты использованной памяти IBM-у уже никто не платит, на трафиковых тарифах канал к СУБД, обычно, не используют. Ы? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2016, 17:49 |
|
||
|
JPA и наследование
|
|||
|---|---|---|---|
|
#18+
Basil A. SidorovСмотрим в плане колонки стоимости: проц и время - одинаковы во всех вариантах.Наверное потому что plan hash value одинаковый, да? а вот разница в IO (physical reads и consistent gets) налицо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2016, 18:07 |
|
||
|
JPA и наследование
|
|||
|---|---|---|---|
|
#18+
я вот мерил на реале (Postgres) и получилось (без сети) Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. Не вижу никакой разницы. Отсюда вывод что время выполнения запроса даже при наличинии toast table увеличивается на величину сравнимую с погрешностью доступа к диску, т.е на неизмеряемую величину. Ваш абстрактный случай абсолютно неинтересный. Всего 1000 записей это ни очем, там всегда seq scan будет. Если там 10млн строк то естесно будут сильно медленней. НО тут возникает вопрос кому нахрен на клиенте 10млн строк нужно сразу да еще и с large objects (Мы же про хибернейт помним)? А если это индекс скан то при извлечении строки 1 после поиска по индексу, чтение самой таблицы и только затем toast tаble 2 не факт что это строка попадет в toast (на реальных данных вот уменя с вероятность менее 50% попадает в toast ) 3 а про то что и как в кэш попадет и как здесь повезет вообще может сильно резульат поменять (по дешевую память уже было) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2016, 18:29 |
|
||
|
JPA и наследование
|
|||
|---|---|---|---|
|
#18+
Андрей Панфилова вот разница в IO (physical reads и consistent gets) налицо.До тех пор, пока ни то, ни другое не упёрлись в возможности хранилища - это пофигу. Особенно с учётом того, что данных миллисекундной точности фактического времени выполнения запроса вы не приводите, общей загрузки базы - тоже не видно, а без этих данных невозможно понять - требуется оптимизация или опять будем яйца (Фаберже) полировать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2016, 18:40 |
|
||
|
JPA и наследование
|
|||
|---|---|---|---|
|
#18+
llemingя вот мерил на реале (Postgres) и получилось (без сети) Код: plsql 1. Вы уверены, что ваш прибор показывает правильные данные? на 8.4 analyze показывает полную фигню: Код: sql 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. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2016, 20:38 |
|
||
|
JPA и наследование
|
|||
|---|---|---|---|
|
#18+
тут наверное следует упомянуть что Postgres прежде чем в toast записывать сжимает данные и проверяет еще раз а стоит ли toast Записывать или просто tuple записать в page т.е. строки типа 'xxxxxxxxxxxxxxxxxxxxxxxxxx........' очень хорошо сжимаются у меня файл 1.08Гб ужался до 1.2Мб ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2016, 21:20 |
|
||
|
JPA и наследование
|
|||
|---|---|---|---|
|
#18+
lleming, ну а с 5Gb "хороших" данных как быть? Ну ладно, установил 9.5 чтобы быть на одной волне: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. и стало понятно почему вы не видите разницы: вы получаете какие-то два числа - "Planning time" и "Execution time", и на основе этих двух чисел делаете вывод. Проблема первая: что такое "Planning time" и "Execution time" никто не знает - из документации следует только то, что "Planning time" и "Execution time" - это нечто, что выводит команда explain, и здесь я готов согласиться, что projection не влияет на "Execution time", выводимый командой explain - эксперимент провели, явнойожидаемой корреляции не заметно (как экспериментатор я ожидал что цифры будут соответствовать количеству читаемых блоков, а они не соответствуют). Проблема вторая: "Execution time", выводимый командой explain, никакого отношения к производительности не имеет. Поясню. В Oracle execution time (что это такое в документации отражено: http://docs.oracle.com/cd/A97630_01/server.920/a96533/sqltrace.htm) для селектов почти всегда 0, потому что для селектов фаза execute подразумевает открытие курсора и получение текущего SCN, а вся работа происходит в фазе fetch (Retrieves rows returned by a query) и в PostgreSQL аналогично - ну не может он 5Gb данных вычитать за 1.5ms. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2016, 03:30 |
|
||
|
JPA и наследование
|
|||
|---|---|---|---|
|
#18+
BlazkowiczАндрей ПанфиловК вам вопрос: а вы из какого года прибыли? из 2000? Сейчас скорость IO у СУБД перекрывает скорость сетевых интерфейсов. Про поколоночное хранение в СУБД слышали что-нибудь? А про InMemory database? Офигеть. Вы опять включили умника с кучей терминов, которые к вопросу отношения не имееют. Интерфейс с удаленной базой всегда был проблемой, даже в нулевых. Поэтому базу старались не отделять особо от middle tier. Но это становиться проблемой в нагруженом кластере, так как RDBMS одна и распределяется очень хреново, поэтому с ней нужен гигабитный интерфейс и желательно не один. Но, вашу ж мать, сейчас 10 гигабитный Ethernet не проблема. А вы собираетсь результаты запроса в пакеты укладывать. А про "колоночное хранение" и прочую чушь, не надо тут. Мы всё ещё обсуждаем ORM, который пока что подразумевает классический RDBMS с нормализацией. Может вам к вендору сходить и рассказать какие там у него лохи сидят: Exadata Smart Scan Projection Limitation ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2016, 03:50 |
|
||
|
JPA и наследование
|
|||
|---|---|---|---|
|
#18+
Андрей Панфилови стало понятно почему вы не видите разницы: вы получаете какие-то два числа - "Planning time" и "Execution time", и на основе этих двух чисел делаете вывод. Проблема первая: что такое "Planning time" и "Execution time" никто не знает - из документации следует только то, что "Planning time" и "Execution time" - это нечто, что выводит команда explain, и здесь я готов согласиться, что projection не влияет на "Execution time", выводимый командой explain - эксперимент провели, явнойожидаемой корреляции не заметно (как экспериментатор я ожидал что цифры будут соответствовать количеству читаемых блоков, а они не соответствуют). Проблема вторая: "Execution time", выводимый командой explain, никакого отношения к производительности не имеет. Поясню. В Oracle execution time (что это такое в документации отражено: http://docs.oracle.com/cd/A97630_01/server.920/a96533/sqltrace.htm) для селектов почти всегда 0, потому что для селектов фаза execute подразумевает открытие курсора и получение текущего SCN, а вся работа происходит в фазе fetch (Retrieves rows returned by a query) и в PostgreSQL аналогично - ну не может он 5Gb данных вычитать за 1.5ms. это в качестве нормы для сложного запроса прогнать expain (analyze, timing). Если хотите узнать сколько будет читаться при этом блоков то Код: plsql 1. И можно будет увидеть " Buffers: shared hit=53" а это значит что 53 * 8 = 424Kb Код: plsql 1. результат 424Kb Цифры соотвествуют если у вас тысяча записей всего и т.к. никаких toast нет таблиц поскольку, данные сжимаются легко и непринужденно, такая таблица с 1000 записей у меня 424Kb весит и если у вас для postgres стоит по дефолту, вся умещается в кэше, о чем говорит shared hits. По сути тут вы даже не меряете IO поскольку его и нет. Вся таблица в кэше это раз, большие данные сжаты здорово это два. Здесь измерено как быстро работает RAM и как быстро процессор может распраковать данные. Даже с IO, для для первого чтения это всего 54 страницы по 8Kb милисекунды даже для HDD "Planning time" - принято считать что парсинг запроса, валидация, построение AST. "execution time" - как я понял это время от начала транзакции до ее завершения. Пример к реальной жизни имеет малое отношение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2016, 10:34 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=39329088&tid=2123600]: |
0ms |
get settings: |
5ms |
get forum list: |
8ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
51ms |
get topic data: |
6ms |
get forum data: |
1ms |
get page messages: |
34ms |
get tp. blocked users: |
1ms |
| others: | 198ms |
| total: | 308ms |

| 0 / 0 |
