|
|
|
JPA и наследование
|
|||
|---|---|---|---|
|
#18+
Андрей ПанфиловТут блистать не чем, данных больше - пропускную способность нужно иметь выше, ограничение на размер пакетов и TCP ACK убивают производительность, или это не очевидно? Не очевидно. Кроме данных в пакетах ездит куча служебной информации. Выборки далеко не всегда имеют единственную строку как результат. Андрей Панфиловт.е. между 1 и 10 разница есть, а между 5 и 10 уже нет? Не понял связи. Мой посыл в том что затраты на поиск и чтение не сопоставимы с разницей в передаче по сети 5 и 50 колонок. Андрей ПанфиловНу по правде говоря, вопрос "почему" на абсурдное, на мой взгляд, утверждение задал я, при этом я свое мнение обосновал. Обоснования не обнаружено. Вы указываете на то что разница должна быть. Таки - да, она есть. Но вы игнорируете тот факт что на фоне всех остальных накладных расходов на выполнения запроса ею можно принебречь. Андрей Панфиловразница в скорости выборки между 2 и 20 колонками - 10%, а между 50 и 100 - уже 100%, по CPU тоже разница видна невооруженным взглядом: http://screencast.com/t/h6kM7yDx Ну, таблицы на 50+ колонок живут в легаси БД, где таки да, есть смысл сужать выборки. А в пределах до 50 я таких значений в разнице не наблюдал в своих тестах в SQL Server. Но дело давно было. Андрей ПанфиловВ PostgreSQL, к примеру, по-умолчанию данные оседают в резалтсете Мы всё ещё говорим об ORM. Вычитали RS в объекты и закрыли. Открытым в серверных решениях его держать нет смысла. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2016, 18:33 |
|
||
|
JPA и наследование
|
|||
|---|---|---|---|
|
#18+
Андрей Панфилов Код: plsql 1. разница в скорости выборки между 2 и 20 колонками - 10%, а между 50 и 100 - уже 100%, по CPU тоже разница Про ОРМ и пагинацию забыли. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2016, 18:54 |
|
||
|
JPA и наследование
|
|||
|---|---|---|---|
|
#18+
BlazkowiczВыборки далеко не всегда имеют единственную строку как результат. Не понял утверждения. База шлет клиенту не по одной строчке, а как клиент захочет ( https://docs.oracle.com/javase/7/docs/api/java/sql/Statement.html#setFetchSize(int)) в оракле значение по-умолчанию - 10. Если знать что резалтсет заведомо узкий, то строки можно упаковывать плотнее. В оракле разница между 1 и 10 на запросе "select '100 chars' from dual connect by level < 1000000" - порядок, что как бы ожидаемо. Причем разница получается исключительно засчет сети. BlazkowiczАндрей Панфиловт.е. между 1 и 10 разница есть, а между 5 и 10 уже нет? Не понял связи. Мой посыл в том что затраты на поиск и чтение не сопоставимы с разницей в передаче по сети 5 и 50 колонок. У вас не предыдущей странице был вопрос: "Вы к нам на машине времени прямиком из 90х?". К вам вопрос: а вы из какого года прибыли? из 2000? Сейчас скорость IO у СУБД перекрывает скорость сетевых интерфейсов. Про поколоночное хранение в СУБД слышали что-нибудь? А про InMemory database? BlazkowiczОбоснования не обнаружено. Вы указываете на то что разница должна быть. Таки - да, она есть. Но вы игнорируете тот факт что на фоне всех остальных накладных расходов на выполнения запроса ею можно принебречь. Андрей Панфиловразница в скорости выборки между 2 и 20 колонками - 10%, а между 50 и 100 - уже 100%, по CPU тоже разница видна невооруженным взглядом: http://screencast.com/t/h6kM7yDx Ну, таблицы на 50+ колонок живут в легаси БД, где таки да, есть смысл сужать выборки. А в пределах до 50 я таких значений в разнице не наблюдал в своих тестах в SQL Server. Но дело давно было.Так есть разница или нет? Может просто MSSQL не так хорошо работает как хотелось бы? BlazkowiczМы всё ещё говорим об ORM. Вычитали RS в объекты и закрыли. Открытым в серверных решениях его держать нет смысла.И какой вывод я из этого должен сделать? Резалтсет читается некоторое время, можете с ходу сказать сколько запусков GC эти объекты переживут? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2016, 19:21 |
|
||
|
JPA и наследование
|
|||
|---|---|---|---|
|
#18+
СурикатЕсть таблица Users в БД с полями: Код: plsql 1. 2. 3. Содержимое таблицы: id пользователя, его имя и какое-то поле с данными большого объёма. (Полей на самом деле большое, плюс связи с другими таблицами и т.п., но мысль ясна) Задачи: 1. Получать по конкретному id информацию о пользователе - т.е. выборка по всем полям и связанным таблицам. 2. Получать из БД список пользователей (скажем, 200 записей) - просто id и имя. Не хочется каждый раз, тащить большие объёмы данных и кучу связанных полей для списка пользователей, где нужны только имя и id. id Соответственно, завожу 2 Entity: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Но, не совсем понимаю, как их замапить на БД. Если как @Inheritance(strategy = InheritanceType.SINGLE_TABLE), то везде в примерах говорится, что User должен быть абстрактным и не создавать инстансов. @MappedSuperclass не отображается на таблицу вообще, как я понял. Как настроить работу, что бы можно было иметь два не абстрактных класса, замапленных на одну таблицу, но отображающих полные и неполные данные. Или эта задача решается вообще как-то иначе? добрый день . Вроде как тема орма поднималась . советы тут уже были : Ваша объектная модель пусть будет как вы ее описали со всеми зависимостями итд ... чтобы эффективно писать на ОРМе и получать перфоманс именно от решения через ОРМ для каждого своего запроса пишите dto и вытаскивайте их по вашей модели Это дает вам полную свободу вы не завязаны на модель ентитей Это избавит вас от проблем dirty Checking , лайзилоудинга итд ... от всех минусов Подхода работы с базой через орм. может конечно возникнуть вопрос в чем тогда перфоманс от использования орма в таком подходе ? Если нужно вводить новый слой dto и писать кучу типового кода итд ... ответ - делайте так :) и не думайте , за вас уже подумали - такой подход это единственное оптимальное благо ) Как говорят ОРМ не для того чтобы извлекать данные из базы - орм для того чтобы их туда вставлять :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2016, 21:50 |
|
||
|
JPA и наследование
|
|||
|---|---|---|---|
|
#18+
Андрей ПанфиловНе понял утверждения. База шлет клиенту не по одной строчке, а как клиент захочет Ну, так это и не я предложил результаты запроса в один TCP пакет поместить. Андрей ПанфиловУ вас не предыдущей странице был вопрос: "Вы к нам на машине времени прямиком из 90х?". 10 лет назад игровые high load сервера писали под кучи в 4Gb. Сейчас 64Gb для рабочей станции не проблема. Поэтому когда мне говорят о том что надо бы на полях экономить, я слегка охреневаю. Андрей ПанфиловК вам вопрос: а вы из какого года прибыли? из 2000? Сейчас скорость IO у СУБД перекрывает скорость сетевых интерфейсов. Про поколоночное хранение в СУБД слышали что-нибудь? А про InMemory database? Офигеть. Вы опять включили умника с кучей терминов, которые к вопросу отношения не имееют. Интерфейс с удаленной базой всегда был проблемой, даже в нулевых. Поэтому базу старались не отделять особо от middle tier. Но это становиться проблемой в нагруженом кластере, так как RDBMS одна и распределяется очень хреново, поэтому с ней нужен гигабитный интерфейс и желательно не один. Но, вашу ж мать, сейчас 10 гигабитный Ethernet не проблема. А вы собираетсь результаты запроса в пакеты укладывать. А про "колоночное хранение" и прочую чушь, не надо тут. Мы всё ещё обсуждаем ORM, который пока что подразумевает классический RDBMS с нормализацией. Андрей ПанфиловИ какой вывод я из этого должен сделать? Резалтсет читается некоторое время, можете с ходу сказать сколько запусков GC эти объекты переживут? У меня ни одного не переживают. Почему у вас это барахло живет так долго, я не скажу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2016, 08:53 |
|
||
|
JPA и наследование
|
|||
|---|---|---|---|
|
#18+
Atum1, хитро). Т.е. в маппинге можно не заужать, а заузить кол-во колонок при передаче на клиента. Я предлагал сразу третий вариант - пагинация на страницы. Эффект тот же. А вывод пока простой - сабж не стоит и 5 копеек для обсуждения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2016, 08:54 |
|
||
|
JPA и наследование
|
|||
|---|---|---|---|
|
#18+
Atum1ответ - делайте так :) и не думайте , за вас уже подумали - такой подход это единственное оптимальное благо ) Хениально. Если бы все так делали, у нас бы сейчас не было, ни ORM, ни Dependency Injection. Ведь инженеры подумали и сочинили отличную J 2 EE спецификацию. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2016, 08:58 |
|
||
|
JPA и наследование
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, от вас какие-то цифры можно будет дождаться или нет? я свои уже привел, при кручении правильных ручек только в жаве, разница между получением 2 и 20 колонок из базы - 4 раза, а ваши 10G - это всего лишь скорость линка, чтобы она в перфоманс материализовалась нужно еще ручки крутить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2016, 11:15 |
|
||
|
JPA и наследование
|
|||
|---|---|---|---|
|
#18+
Андрей ПанфиловBlazkowicz, от вас какие-то цифры можно будет дождаться или нет? я свои уже привел, при кручении правильных ручек только в жаве, разница между получением 2 и 20 колонок из базы - 4 раза, а ваши 10G - это всего лишь скорость линка, чтобы она в перфоманс материализовалась нужно еще ручки крутить. приведенный пример это сферический конь в вакуме, к реальной жизни имеет малой отношение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2016, 11:26 |
|
||
|
JPA и наследование
|
|||
|---|---|---|---|
|
#18+
Андрей Панфиловот вас какие-то цифры можно будет дождаться или нет? Не сегодня. Андрей Панфиловя свои уже привел, при кручении правильных ручек только в жаве, разница между получением 2 и 20 колонок из базы - 4 раза Угу. Выкинули IO. Померяли не понятно что. Вышел синтетический тест, оторванный от реальности. Андрей Панфилова ваши 10G - это всего лишь скорость линка, чтобы она в перфоманс материализовалась нужно еще ручки крутить. Ох, уж эти детские мечты про "перформанс", который нужен гораздо меньше чем качественный, открытый к изменениям код и заложеная в архитектуру масштабируемость. 10 GB хватит для нормального взаимодействия любой RBDMS и middle tier реализованного без откровенных косяков. Можно ничего особо и не крутить. А когда нужно больше, то чаще встаёт вопрос про то подходит ли для этой задачи RDBMS в принципе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2016, 11:30 |
|
||
|
JPA и наследование
|
|||
|---|---|---|---|
|
#18+
Андрей Панфиловот вас какие-то цифры можно будет дождаться или нет? легко. - берём PL Developer для оракле - пишем там 2 запроса Код: java 1. 2. - первый 0,3 сек - первый 0,07 сек Дальше то что? ---- Это напоминает вопросы новичков в ветке Оракла: "Стоит ли таблицу в БД делить на две, если полей много?". Но тут же не новички собрались)). А вы с умным видом доказываете что то на физическом уровне, про хранение "листьев данных в СУБД". Ответили бы уже на первый поста автору, да и Фсё)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2016, 11:39 |
|
||
|
JPA и наследование
|
|||
|---|---|---|---|
|
#18+
Petro123- первый 0,3 сек - первый второй 0,07 сек ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2016, 11:40 |
|
||
|
JPA и наследование
|
|||
|---|---|---|---|
|
#18+
Андрей Панфилов, ну, а если говорить о прикладном уровне и Качестве проектирования, то - вы не тем инструментом меряете ОРМ. Т.е. погрешности вашего инструмента измерения покрывают сам результат. Т.к. ОРМ для прикладников. А я в своих проектах ни разу не испытывал тормозов из-за КОЛИЧЕСТВА полей. Это тут вам и втолковывают практики. Удачи! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2016, 11:44 |
|
||
|
JPA и наследование
|
|||
|---|---|---|---|
|
#18+
BlazkowiczУгу. Выкинули IO. Померяли не понятно что. Вышел синтетический тест, оторванный от реальности. Вам никто не мешает описать "правильную" методику, только при этом не забывайте, что мы как бы в 2016 году живем, и воткнуть 512Gb памяти в СУБД особых проблем не составляет (хотя вру, сейчас писюки под 12Tb идут). BlazkowiczОх, уж эти детские мечты про "перформанс", который нужен гораздо меньше чем качественный, открытый к изменениям код и заложеная в архитектуру масштабируемость. Интересно, чем это заворачивание "мусора" в @Embeddable/Embedded начало влиять на качество кода и открытость к изменениям? Blazkowicz10 GB хватит для нормального взаимодействия любой RBDMS и middle tier реализованного без откровенных косяков. Можно ничего особо и не крутить. А когда нужно больше, то чаще встаёт вопрос про то подходит ли для этой задачи RDBMS в принципе. Возьмите для начала любой сетевой калькулятор, например https://www.switch.ch/network/tools/tcp_throughput/, и посмотрите какой throughput выдает TCP на 10G линке. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2016, 11:53 |
|
||
|
JPA и наследование
|
|||
|---|---|---|---|
|
#18+
Андрей ПанфиловИнтересно, чем это заворачивание "мусора" в @Embeddable/Embedded начало влиять на качество кода и открытость к изменениям? Вы о чем вообще??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2016, 11:59 |
|
||
|
JPA и наследование
|
|||
|---|---|---|---|
|
#18+
BlazkowiczAtum1ответ - делайте так :) и не думайте , за вас уже подумали - такой подход это единственное оптимальное благо ) Хениально. Если бы все так делали, у нас бы сейчас не было, ни ORM, ни Dependency Injection. Ведь инженеры подумали и сочинили отличную J 2 EE спецификацию. =) просто инженеры все еще думают надо EE ) а пока они думают мы используем спринг , и они (инженеры) так же его используют :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2016, 12:04 |
|
||
|
JPA и наследование
|
|||
|---|---|---|---|
|
#18+
BlazkowiczВы о чем вообще???вам лучше знать, про "качественный, открытый к изменениям код и заложеная в архитектуру масштабируемость" писал же не я, соответственно и возник вопрос каким образом сужение projection влияет на качество кода. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2016, 12:19 |
|
||
|
JPA и наследование
|
|||
|---|---|---|---|
|
#18+
Petro123, утверждения "для ваших 200 записей вы видимого профита не получите" и "ширина выборки на производительность имеет совершенно никакого влияния" несут совершенно разную смысловую нагрузку, при этом второе не только неочевидно, да еще и нелогично, и, соответственно, требует хоть какого-то стройного подтверждения, а не чего-то в духе: "в жаву мы воткнем 512Gb памяти чтобы не париться из-за объемов, а в базу не будем - пусть страдает от I/O" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2016, 12:39 |
|
||
|
JPA и наследование
|
|||
|---|---|---|---|
|
#18+
Андрей ПанфиловPetro123, утверждения "для ваших 200 записей вы видимого профита не получите" и "ширина выборки на производительность имеет совершенно никакого влияния" несут совершенно разную смысловую нагрузку, при этом второе не только неочевидно, да еще и нелогично, и, соответственно, требует хоть какого-то стройного подтверждения, а не чего-то в духе: "в жаву мы воткнем 512Gb памяти чтобы не париться из-за объемов, а в базу не будем - пусть страдает от I/O" нарвали фраз из контекста "видимого профита не получите" "ширина выборки на производительность имеет совершенно никакого влияния, разница околонулевая" довольно похоже не правда ли по смыслу "в жаву мы воткнем 512Gb памяти чтобы не париться из-за объемов" Недавно насчитал за 150-200тыр можно собрать 132Gb RAM, машинку (цена в пределах топового макбука) "в базу не будем - пусть страдает от I/O" - об этом уже говорилось что чтение построчное (Postgres) разницы нет для DB читать одну колонку или все сразу ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2016, 12:56 |
|
||
|
JPA и наследование
|
|||
|---|---|---|---|
|
#18+
llemingоб этом уже говорилось что чтение построчное (Postgres) разницы нет для DB читать одну колонку или все сразувы бы почитали про инструмент с которым вы работаете прежде чем утверждать что разницы нет: https://www.postgresql.org/docs/9.5/static/storage-toast.html ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2016, 13:07 |
|
||
|
JPA и наследование
|
|||
|---|---|---|---|
|
#18+
Андрей Панфиловllemingоб этом уже говорилось что чтение построчное (Postgres) разницы нет для DB читать одну колонку или все сразувы бы почитали про инструмент с которым вы работаете прежде чем утверждать что разницы нет: https://www.postgresql.org/docs/9.5/static/storage-toast.html читаю регулярно. сразу второе предложение Therefore, it is not possible to store very large field values directly. тут уже где то говорилось что если large fields то делать их lazy. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2016, 13:12 |
|
||
|
JPA и наследование
|
|||
|---|---|---|---|
|
#18+
llemingсразу второе предложение Therefore, it is not possible to store very large field values directly. тут уже где то говорилось что если large fields то делать их lazy.Давайте с первого предложения, а не со второго. Что там происходит если строка таблицы в блок не влезает? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2016, 13:23 |
|
||
|
JPA и наследование
|
|||
|---|---|---|---|
|
#18+
PostgreSQL uses a fixed page size (commonly 8 kB), and does not allow tuples to span multiple pages дальше что? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2016, 13:25 |
|
||
|
JPA и наследование
|
|||
|---|---|---|---|
|
#18+
llemingPostgreSQL uses a fixed page size (commonly 8 kB), and does not allow tuples to span multiple pages дальше что?В вашем инструменте принципиально нельзя создать "широкую" таблицу (больше 8K) или-таки можно, но при этом будет использоваться TOAST вне зависимости от того есть в таблице "large fields" или нет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2016, 13:56 |
|
||
|
JPA и наследование
|
|||
|---|---|---|---|
|
#18+
Андрей ПанфиловllemingPostgreSQL uses a fixed page size (commonly 8 kB), and does not allow tuples to span multiple pages дальше что?В вашем инструменте принципиально нельзя создать "широкую" таблицу (больше 8K) или-таки можно, но при этом будет использоваться TOAST вне зависимости от того есть в таблице "large fields" или нет? можно создать таблицу где tuple должен поместиться в 8Kb, если есть large fields и tuple больше 8Kb то его выкинет в toast table. Если нет large fields то создать таблицу где tuple превысит 8Kb думаю не получится (а оно зачем в таблице иметь больше сотни колонок) Anyway. Стало интересно вот проверил и привожу циферки. размер toast таблиц составляет 0.03% (не 3% а именно 0.03%) по отношению БД. Таблиц где toast_read превышает количество head_read нет. Есть всего лишь одна таблица где общее количество toast_read достаточно велико в абсолютной величине (Правда если сравнить с head read тойже таблицы то уже не так и много). Да и то там полей то, тот самый large object, id т.е. уменьшить количество полей из выборки уже некуда. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2016, 14:41 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=39328963&tid=2123600]: |
0ms |
get settings: |
10ms |
get forum list: |
20ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
137ms |
get topic data: |
8ms |
get forum data: |
4ms |
get page messages: |
53ms |
get tp. blocked users: |
1ms |
| others: | 240ms |
| total: | 479ms |

| 0 / 0 |
