powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / JPA и наследование
25 сообщений из 108, страница 3 из 5
JPA и наследование
    #39328492
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей ПанфиловТут блистать не чем, данных больше - пропускную способность нужно иметь выше, ограничение на размер пакетов и 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 в объекты и закрыли. Открытым в серверных решениях его держать нет смысла.
...
Рейтинг: 0 / 0
JPA и наследование
    #39328500
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей Панфилов
Код: plsql
1.
SELECT '100 chars' AS A1, ... '100 chars' AS AN FROM DUAL CONNECT BY LEVEL < 1000000;


разница в скорости выборки между 2 и 20 колонками - 10%, а между 50 и 100 - уже 100%, по CPU тоже разница
Про ОРМ и пагинацию забыли.
...
Рейтинг: 0 / 0
JPA и наследование
    #39328512
Андрей Панфилов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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 эти объекты переживут?
...
Рейтинг: 0 / 0
JPA и наследование
    #39328542
Atum1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
СурикатЕсть таблица Users в БД с полями:

Код: plsql
1.
2.
3.
id
name
someBigData



Содержимое таблицы: id пользователя, его имя и какое-то поле с данными большого объёма. (Полей на самом деле большое, плюс связи с другими таблицами и т.п., но мысль ясна)

Задачи:
1. Получать по конкретному id информацию о пользователе - т.е. выборка по всем полям и связанным таблицам.
2. Получать из БД список пользователей (скажем, 200 записей) - просто id и имя. Не хочется каждый раз, тащить большие объёмы данных и кучу связанных полей для списка пользователей, где нужны только имя и id.
id
Соответственно, завожу 2 Entity:

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
@Entity
public class User {
    private Long id;
    private String name;
}

@Entity
public class UserData extends User {
    private String someBigData;
}



Но, не совсем понимаю, как их замапить на БД. Если как @Inheritance(strategy = InheritanceType.SINGLE_TABLE), то везде в примерах говорится, что User должен быть абстрактным и не создавать инстансов. @MappedSuperclass не отображается на таблицу вообще, как я понял.

Как настроить работу, что бы можно было иметь два не абстрактных класса, замапленных на одну таблицу, но отображающих полные и неполные данные. Или эта задача решается вообще как-то иначе?


добрый день .
Вроде как тема орма поднималась .

советы тут уже были :

Ваша объектная модель пусть будет как вы ее описали со всеми зависимостями итд ...

чтобы эффективно писать на ОРМе и получать перфоманс именно от решения через ОРМ

для каждого своего запроса пишите dto и вытаскивайте их по вашей модели

Это дает вам полную свободу вы не завязаны на модель ентитей

Это избавит вас от проблем dirty Checking , лайзилоудинга итд ... от всех минусов Подхода работы с базой через орм.


может конечно возникнуть вопрос в чем тогда перфоманс от использования орма в таком подходе ?

Если нужно вводить новый слой dto и писать кучу типового кода итд ...

ответ - делайте так :) и не думайте , за вас уже подумали - такой подход это единственное оптимальное благо )

Как говорят ОРМ не для того чтобы извлекать данные из базы - орм для того чтобы их туда вставлять :)
...
Рейтинг: 0 / 0
JPA и наследование
    #39328672
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей ПанфиловНе понял утверждения. База шлет клиенту не по одной строчке, а как клиент захочет
Ну, так это и не я предложил результаты запроса в один TCP пакет поместить.

Андрей ПанфиловУ вас не предыдущей странице был вопрос: "Вы к нам на машине времени прямиком из 90х?".
10 лет назад игровые high load сервера писали под кучи в 4Gb. Сейчас 64Gb для рабочей станции не проблема. Поэтому когда мне говорят о том что надо бы на полях экономить, я слегка охреневаю.

Андрей ПанфиловК вам вопрос: а вы из какого года прибыли? из 2000? Сейчас скорость IO у СУБД перекрывает скорость сетевых интерфейсов. Про поколоночное хранение в СУБД слышали что-нибудь? А про InMemory database?
Офигеть. Вы опять включили умника с кучей терминов, которые к вопросу отношения не имееют. Интерфейс с удаленной базой всегда был проблемой, даже в нулевых. Поэтому базу старались не отделять особо от middle tier. Но это становиться проблемой в нагруженом кластере, так как RDBMS одна и распределяется очень хреново, поэтому с ней нужен гигабитный интерфейс и желательно не один. Но, вашу ж мать, сейчас 10 гигабитный Ethernet не проблема. А вы собираетсь результаты запроса в пакеты укладывать.

А про "колоночное хранение" и прочую чушь, не надо тут. Мы всё ещё обсуждаем ORM, который пока что подразумевает классический RDBMS с нормализацией.

Андрей ПанфиловИ какой вывод я из этого должен сделать? Резалтсет читается некоторое время, можете с ходу сказать сколько запусков GC эти объекты переживут?
У меня ни одного не переживают. Почему у вас это барахло живет так долго, я не скажу.
...
Рейтинг: 0 / 0
JPA и наследование
    #39328673
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Atum1, хитро).
Т.е. в маппинге можно не заужать, а заузить кол-во колонок при передаче на клиента.
Я предлагал сразу третий вариант - пагинация на страницы.
Эффект тот же.
А вывод пока простой - сабж не стоит и 5 копеек для обсуждения.
...
Рейтинг: 0 / 0
JPA и наследование
    #39328677
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Atum1ответ - делайте так :) и не думайте , за вас уже подумали - такой подход это единственное оптимальное благо )

Хениально. Если бы все так делали, у нас бы сейчас не было, ни ORM, ни Dependency Injection. Ведь инженеры подумали и сочинили отличную J 2 EE спецификацию.
...
Рейтинг: 0 / 0
JPA и наследование
    #39328795
Андрей Панфилов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz,

от вас какие-то цифры можно будет дождаться или нет? я свои уже привел, при кручении правильных ручек только в жаве, разница между получением 2 и 20 колонок из базы - 4 раза, а ваши 10G - это всего лишь скорость линка, чтобы она в перфоманс материализовалась нужно еще ручки крутить.
...
Рейтинг: 0 / 0
JPA и наследование
    #39328803
lleming
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей ПанфиловBlazkowicz,

от вас какие-то цифры можно будет дождаться или нет? я свои уже привел, при кручении правильных ручек только в жаве, разница между получением 2 и 20 колонок из базы - 4 раза, а ваши 10G - это всего лишь скорость линка, чтобы она в перфоманс материализовалась нужно еще ручки крутить.

приведенный пример это сферический конь в вакуме, к реальной жизни имеет малой отношение.
...
Рейтинг: 0 / 0
JPA и наследование
    #39328807
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей Панфиловот вас какие-то цифры можно будет дождаться или нет?

Не сегодня.

Андрей Панфиловя свои уже привел, при кручении правильных ручек только в жаве, разница между получением 2 и 20 колонок из базы - 4 раза
Угу. Выкинули IO. Померяли не понятно что. Вышел синтетический тест, оторванный от реальности.

Андрей Панфилова ваши 10G - это всего лишь скорость линка, чтобы она в перфоманс материализовалась нужно еще ручки крутить.
Ох, уж эти детские мечты про "перформанс", который нужен гораздо меньше чем качественный, открытый к изменениям код и заложеная в архитектуру масштабируемость. 10 GB хватит для нормального взаимодействия любой RBDMS и middle tier реализованного без откровенных косяков. Можно ничего особо и не крутить. А когда нужно больше, то чаще встаёт вопрос про то подходит ли для этой задачи RDBMS в принципе.
...
Рейтинг: 0 / 0
JPA и наследование
    #39328817
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей Панфиловот вас какие-то цифры можно будет дождаться или нет?
легко.
- берём PL Developer для оракле
- пишем там 2 запроса
Код: java
1.
2.
select * from t; //79 полей
select id, sdate from t;


- первый 0,3 сек
- первый 0,07 сек
Дальше то что?
----
Это напоминает вопросы новичков в ветке Оракла: "Стоит ли таблицу в БД делить на две, если полей много?".
Но тут же не новички собрались)).
А вы с умным видом доказываете что то на физическом уровне, про хранение "листьев данных в СУБД".
Ответили бы уже на первый поста автору, да и Фсё))
...
Рейтинг: 0 / 0
JPA и наследование
    #39328819
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123- первый 0,3 сек
- первый второй 0,07 сек
...
Рейтинг: 0 / 0
JPA и наследование
    #39328823
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей Панфилов,
ну, а если говорить о прикладном уровне и Качестве проектирования, то - вы не тем инструментом меряете ОРМ.
Т.е. погрешности вашего инструмента измерения покрывают сам результат.
Т.к. ОРМ для прикладников. А я в своих проектах ни разу не испытывал тормозов из-за КОЛИЧЕСТВА полей.
Это тут вам и втолковывают практики.
Удачи!
...
Рейтинг: 0 / 0
JPA и наследование
    #39328833
Андрей Панфилов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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 линке.
...
Рейтинг: 0 / 0
JPA и наследование
    #39328842
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей ПанфиловИнтересно, чем это заворачивание "мусора" в @Embeddable/Embedded начало влиять на качество кода и открытость к изменениям?
Вы о чем вообще???
...
Рейтинг: 0 / 0
JPA и наследование
    #39328853
Atum1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczAtum1ответ - делайте так :) и не думайте , за вас уже подумали - такой подход это единственное оптимальное благо )

Хениально. Если бы все так делали, у нас бы сейчас не было, ни ORM, ни Dependency Injection. Ведь инженеры подумали и сочинили отличную J 2 EE спецификацию.

=) просто инженеры все еще думают надо EE ) а пока они думают мы используем спринг , и они (инженеры) так же его используют :)
...
Рейтинг: 0 / 0
JPA и наследование
    #39328877
Андрей Панфилов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczВы о чем вообще???вам лучше знать, про "качественный, открытый к изменениям код и заложеная в архитектуру масштабируемость" писал же не я, соответственно и возник вопрос каким образом сужение projection влияет на качество кода.
...
Рейтинг: 0 / 0
JPA и наследование
    #39328897
Андрей Панфилов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123,

утверждения "для ваших 200 записей вы видимого профита не получите" и "ширина выборки на производительность имеет совершенно никакого влияния" несут совершенно разную смысловую нагрузку, при этом второе не только неочевидно, да еще и нелогично, и, соответственно, требует хоть какого-то стройного подтверждения, а не чего-то в духе: "в жаву мы воткнем 512Gb памяти чтобы не париться из-за объемов, а в базу не будем - пусть страдает от I/O"
...
Рейтинг: 0 / 0
JPA и наследование
    #39328914
lleming
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей ПанфиловPetro123,

утверждения "для ваших 200 записей вы видимого профита не получите" и "ширина выборки на производительность имеет совершенно никакого влияния" несут совершенно разную смысловую нагрузку, при этом второе не только неочевидно, да еще и нелогично, и, соответственно, требует хоть какого-то стройного подтверждения, а не чего-то в духе: "в жаву мы воткнем 512Gb памяти чтобы не париться из-за объемов, а в базу не будем - пусть страдает от I/O"

нарвали фраз из контекста

"видимого профита не получите"
"ширина выборки на производительность имеет совершенно никакого влияния, разница околонулевая"

довольно похоже не правда ли по смыслу

"в жаву мы воткнем 512Gb памяти чтобы не париться из-за объемов"
Недавно насчитал за 150-200тыр можно собрать 132Gb RAM, машинку (цена в пределах топового макбука)

"в базу не будем - пусть страдает от I/O" - об этом уже говорилось что чтение построчное (Postgres) разницы нет для DB читать одну колонку или все сразу
...
Рейтинг: 0 / 0
JPA и наследование
    #39328924
Андрей Панфилов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
llemingоб этом уже говорилось что чтение построчное (Postgres) разницы нет для DB читать одну колонку или все сразувы бы почитали про инструмент с которым вы работаете прежде чем утверждать что разницы нет: https://www.postgresql.org/docs/9.5/static/storage-toast.html
...
Рейтинг: 0 / 0
JPA и наследование
    #39328927
lleming
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей Панфилов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.
...
Рейтинг: 0 / 0
JPA и наследование
    #39328934
Андрей Панфилов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
llemingсразу второе предложение
Therefore, it is not possible to store very large field values directly.

тут уже где то говорилось что если large fields то делать их lazy.Давайте с первого предложения, а не со второго. Что там происходит если строка таблицы в блок не влезает?
...
Рейтинг: 0 / 0
JPA и наследование
    #39328936
lleming
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PostgreSQL uses a fixed page size (commonly 8 kB), and does not allow tuples to span multiple pages

дальше что?
...
Рейтинг: 0 / 0
JPA и наследование
    #39328963
Андрей Панфилов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
llemingPostgreSQL uses a fixed page size (commonly 8 kB), and does not allow tuples to span multiple pages

дальше что?В вашем инструменте принципиально нельзя создать "широкую" таблицу (больше 8K) или-таки можно, но при этом будет использоваться TOAST вне зависимости от того есть в таблице "large fields" или нет?
...
Рейтинг: 0 / 0
JPA и наследование
    #39328990
lleming
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей Панфилов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 т.е. уменьшить количество полей из выборки уже некуда.
...
Рейтинг: 0 / 0
25 сообщений из 108, страница 3 из 5
Форумы / Java [игнор отключен] [закрыт для гостей] / JPA и наследование
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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