• Java теперь платная? Развенчиваем слухи (или нет?)
    0
    Установил тут corretto на MacOS. Они единственные ставят JDK в JavaVirtualMachines не пофайлово, а пакетом. Мелочь, а приятно.
    Из плюсов — то же соответствие по TCK, ну и очевидно откуда финансирование: у Amazon куча сервисов на Java и они посчитали целесообразнее сопровождать jdk самостоятельно.
    Из минусов мне видится, что как только они переползут целиком на Java 11, то Java 8 забросят, но к тому времени — думается — большинство переползёт.
    P.S.> Если вы разрабатываете на MacOS, то рекомендую рассмотреть corretto как jdk для рабочего ПК.
  • Шпаргалка Java программиста 4. Java Stream API
    0
    Наткнулся на фичу, которая может создать неочевидную проблему…
    В общем Stream.of(...).peek(s->System.out.println(«PEEK:S»)).X
    В случае X=.forEach(System.out.println(«FOR:S»)) выдаст PEEK:S\nFOR:S…
    А в случае X=.count() — ничего не выдаст, что неочевидно, так как ожидается PEEK:S…
  • 10 советов по использованию ExecutorService
    0
    Так, прошу прощения — я тут ошибся — я double вставил, а он при делении на 0 втыкает Infinite без исключения… Лажанул — простите.
  • 10 советов по использованию ExecutorService
    0
    Интересно, а вы пробовали, что реально произойдёт, а не в теории?
    У вас написано:

    final Future<Integer> division = executorService.submit(() -> 1 / 0);
    //ниже будет выброшено ExecutionException, вызванное ArithmeticException
    division.get();
    

    Примечательно, что даже в Spring framework допустили эту ошибку в Async, см.: SPR-8995 и SPR-12090.


    Давайте вызовем:
    
        public static void main(String[] args) {
            try {
                System.out.println(
                        Executors.newSingleThreadExecutor()
                                 .submit(() -> 1.0d / 0).get()
                );
            } catch (Throwable tr) {
                System.out.println(tr.getLocalizedMessage());
            }
        }


    Вы пишете об исключении… Уупс — результат будет Infinite значение Double, а не ExecutionException, как пишете Вы
  • Partition Option & Oracle Server SE One
    0
    Спасибо, как то так я и вытягивал список, но вот сама ссылка на хабик исключительно полезна — много готовых скриптов в зоне досягаемости, а то у самого руки не доходят всё в облако или хаб свалить. Мерси, плюсую.
  • Обработка больших запакованных файлов на Mac и не только
    +1
    Вещь, конечно, полезная из разряда must to know, но вы с постом лет на 20 опоздали…
    В UNIX подобных системах (а MacOS X это — фактически — клон FreeBsd), а так же в Linux-системах с помощью утилит
    mknod и mkfifo возможно создание именованного канала. На современных FreeBSD системах уходят от использования mknod (утилита объявляется как deprecated), а — как правило — используют mkfifo.
    В 90-х гг. использовал для упаковки/распаковки на лету дампов СУБД Oracle при экспорте/импорте при ограниченности свободного дикого пространства.
    Да — удобно, но это из разряда базовых знаний, sorry.
    P.S.> Но всё равно плюсую…
  • Кластеризация данных СУБД Oracle вне кластерной таблицы
    0
    Ну, для phisical I/O всё по честному — это в секундах. Т.е. с 0.6-0.9 секунды мы упали до 0.045-0.065
    Для logical I/O не поделено на кол-во процессов и всё это в сантисекундах. Поскольку всё в относительных величинах, то я как то не обращал внимание на единицы измерения — главное сравнивать всё в рамках одних единиц. В общем, для logical I/O для перевода в те же единицы, что и при phisical I/O надо разделить на 100 (процессов) и на 100 (всё в сантисекундах), т.е. — в итоге — поделить на 10000.
    Как то так.
  • Кластеризация данных СУБД Oracle вне кластерной таблицы
    0
    То, где я всё это тестировал это был HP SuperDome с подключенным Raid массивом — или какой-то из XP или NetApp (я уже не помню, что именно под эту задачу мне выдали). У заказчика это всё было задействовано на SuperDome + XP. Система хранения у нас — raw-девайсы (такую базу мне дали), а у заказчика и raw-девайсы и ASM (у каждого заказчика свой vision). Уровень RAID — думаю, что 5, хотя может быть и 7+2. Я снимал данные и не было цели подставлять оптимальную систему хранения.
    Объёмы — за 3 года, секции по периоду (от 3 секций на день до секций по несколько дней в зависимости от заказчика), подсекций — от 16 до 64. На самом деле у заказчиков со временем данные стали выноситься во внешнюю систему и доступ к ним через dblink (так захотели), а в оперативной хранятся только 3-6 месяцев. По мере устаревания секции тоже сливались вместе на более длинные периоды (до месяца) — там же данные трогать не надо, хранятся упорядоченно и индексы на них сбалансированны.
    P.S.> Средний дневной объём — 80-120 млн. записей/сутки. Точнее не скажу, но порядок такой.
    P.P.S.> Естественно, что размеры периодов, количества подсекций, как мёрджить периоды и надо ли и т.д. полностью кастомно под заказчика, его объёмы, возможности техники, цели и т.п.
  • Oracle, SQL*Net или ORDER BY экономит сетевые ресурсы…
    0
    Если на уровне Statement, то да, но есть ещё на уровне соединения: класс — OracleConnection, метод — setDefaultRowPrefetch(...).

    Да, и коль скоро мы заговорили про ARRAYSIZE,- есть такой интересный момент:
    если мы, например, открываем курсор и тащим из него %fetchSize% строк, а последние строки попали из блока базы данных NNN, то после .next() нам будет передана следующая порция строк и если блок NNN был вычитан не полностью и там ещё есть нужные нам строки, то будет произведена операция повторного логического чтения данного блока. Таким образом, можно предположить, что если размер данных от %fetchSize% строк будет достаточно мал в сравнении с размером блока базы данных, то количество логических чтений будет выше реально необходимого (может даже в несколько раз).
  • Partition Option & Oracle Server SE One
    0
    В том то и дело, что после реорганизации таблицы в регулярную, выключением event-а и перезапуском базы данных в DBA_FEATURE_USAGE_STATISTICS следов по использованию опции не осталось. Та строчка, что есть присутствовала с момента создания базы и говорит об использовании опции системой.
  • Oracle, SQL*Net или ORDER BY экономит сетевые ресурсы…
    0
    Да, при некоторых задачах успеха может и не быть по объёму трафика, но сокращение roundtrip тоже дает эффект.
    Касательно сокращения трафика между бэком и веб-клиентом — это вопрос не данной темы. Здесь рассматривается взаимодействие между бэком и сервером базы данных либо между клиентом и сервером базы данных, а точнее — работа с СУБД Oracle посредством SQL*Net протокола.
  • Oracle, SQL*Net или ORDER BY экономит сетевые ресурсы…
    0
    Ну, если вы используете ODBC или JDBC*OCI, то все вызовы проходят через те же Oracle Call Interface функции и результат будет такой же (только ARRAYSIZE надо определять через header соединения). Касательно JDBC*Thin думаю, что тоже будет всё ОК, но это надо проверять. Там реализован тот же SQL*Net протокол, но средствами Java Native и — естественно — некоторые аспекты могли быть опущены.
  • Oracle, SQL*Net или ORDER BY экономит сетевые ресурсы…
    0
    Ну, у себя я обнаружил это на обычных данных по абонентам. В среднем на абонента приходилось 7-14 записей, строчки ~ 1200 байт, в строке выборки находились данные по id абонента и имени клиента + несколько низкоселективных атрибутов. Запрос был аналитический типа STAR с групировками (там всякие агрегаты были). Базово сортировало не по абоненту, записей — около 48млн. При сортировке по клиенту, id абонента,… ужалось порядка 35%. Как повлиял ARRAYSIZE уже не скажу — на тот момент я его уже увеличил.

    По поводу вашего вопроса — использовались реальные имена клиентов в истории, даты — естественно — были разные (
    т.е. ближе ко второму вашему примеру).
  • Oracle, SQL*Net или ORDER BY экономит сетевые ресурсы…
    +4
    Таки да — нормально. Есть системы, где в принципе не предусмотрена обработка данных на стороне сервера. Возможны ситуации, когда данные пакетно обрабатываются через определённые интервалы — выгружается некий объём и обсчитывается внешней по отношению к серверу подсистемой. Есть системы многомерного анализа и т.д.
    Да и обычные OLTP системы могут создать сложности в плане избыточной нагрузки. Сократив количество roundtrip-ов можно убрать bottleneck с транзакционного ограничения канала, а сократив объем — с пропускного.
    Когда система упирается в нехватку некоторого ресурса, то это — как правило — говорит о том, что мы подбираемся к границам возможностей системы (ну или просчитались где-то в плане выделения ресурса), но редко бывает, что заканчивается всё и сразу и при возникновении «bottleneck» в качестве первой помощи мы — как правило — пытаемся заткнуть нехватку одного ресурса избыточностью другого. Например — нехватку памяти свопом на диск, нехватку CPU выделением большего объёма памяти и т.д. Не всегда такие «решения» высокоэффективны в плане базовых, но могут быть исключительно полезны в частных задачах.
    Если вы упираетесь в пропускную способность канала, который доставляет SQL*Net пакеты, то можете попробовать увеличить её, заплатив дополнительной нагрузкой на CPU и память сервера базы данных (хоть ресурс и дорогой, но если он избыточен, то почему бы и нет).
  • К глобальной куче без пробок. Исследуем менеджеры памяти
    0
    Так мы, вроде, уже давно используем tcmalloc в проектах в компании (нп. в HAS), разве что кроме Windows так как там не понравилось встревание либы напрямую в таблицу вызовов и правка её. Но у нас и особо нагруженных сервисов под Windows не наблюдается. tcmalloc особо эффективен на малых аллокациях (например — до 64к), а на больших ему уже могут составить конкуренцию и другие либы, но для наших задач tcmalloc в большинстве случаев подходит отлично. Насколько я понимаю — в большинстве проектов у нас и используется tcmalloc и уже довольно давно, а посему ваша делема в выборе меня удивила. Хотелось бы узнать над чем вы работали.
    P.S.> Да, и tcmalloc у нас вроде как портирован под HP уже внутри компании.
    P.P.S.> Но за статейку всё равно спасибо — цифры довольно интересные.
  • Автодилеры одного из штатов США добиваются закрытия магазина Tesla из-за его слишком высоких продаж
    +21
    Блин, XXI век.
    Приходишь в салон, заказываешь тест-драйв.
    Понравилось — покупаешь ЧЕРЕЗ ИНТЕРНЕТ В СОСЕДНЕМ ШТАТЕ С ДОСТАВКОЙ.
    Можно и дальше пойти — склад рядом разместить и доставят через пять минут;).

    P.S.> И налоги заплатятся в соседнем штате…
  • Использование Oracle RESULT_CACHE 
«не по прямому назначению»
    0
    xtender меня опередил…
  • Использование Oracle RESULT_CACHE 
«не по прямому назначению»
    0
    Ээээмммм… Я как бы специально вставил пункт P.P.P.S. Тема не про то как решать конкретную задачу, а то, что есть побочный эффект от oracle result cache благодаря которому можно организовать переключение состояния и использовать тяжелую функцию в ограниченном количестве вызовов.

    2. Если попытаться из пакета сбросить result cache функции этого же пакета, то кэш не сбрасывается. В остальных моментах всё зависит от правильности настройки параметров result-cache.

    3.?..

    4. Ещё раз повторюсь — это не законченное решение, а пример использования

    5. Мне как-то один человек говорил, что то-то и то-то мы писать не будем — а вдруг программист ошибётся :)…
  • Oracle 12c. Новые фичи приносят новые подводные камни
    0
    Тема про PLSQL Developer — ИМХО — здесь лишняя.
    Формат изложения «DBMS_METADATA and session sequence» и «Pagination, массивы и run-time расчёт количества строк для fetch» больше похож на заметки на полях.
    Но в общем — как я уже сказал — полезно.
    P.S.> Баги проверил — живёханьки, а вот local_listener dbca у меня на OEL прописал, но коллеги тоже сталкивались с отсутствием регистрации на листенере…
  • Oracle 12c. Новые фичи приносят новые подводные камни
    +1
    Изложено немного сумбурно, но достаточно интересно.
    Спасибо — было полезно.