can3p (can3p) wrote,
can3p
can3p

Из прочитанного. Выпуск 36

1) Java Performance, Charlie Hunt, Binu John

5 / 5

Подробная книжка про оптимизацию java-программ. Вступительная глава дает общую картину, где у приложения (не только на яве) может проседать производительность, а далее идет уже jvm-специфика. После объяснения работы jvm, поясняется как работает там сборщик мусора. В jvm применяется generational сборщики мусора. Это означает, что делается предположение, что объекты в памяти живут либо очень мало, либо очень долго, и на основе этого в подсистеме памяти выделяется четыре области - ясли для всех новых объектов, средняя зона, куда переносят более долго живущие объекты из яслей, большая область для старых объектов и четвертая статичная зона, где распределяется память для служебных объектов jvm на подобии объектов классов.

В jvm представляются разные сборщики мусора, которые различаются в том, как именно они мигрируют объекты между областями, делают это в один поток или в параллель, асинхронно или исключительно остановив все треды приложения.

Собственно, все. Дальше идет разбор о том, как можно мониторить происходящее в этих областях, на что влияет их размер, как понять, что у приложения именно в этой области проблемы, поможет ли изменения размера одной из них.

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

2) High performance MySQL, Baron Schwarz, Peter Zaitsev, Vadim Tkachenko

5 / 5

Честно признаюсь, до конца книгу не прочитал, скорее долистал, просто из-за того, что определенный уровень деталей мне не интересен. Но вообще, книга очень достойная, если хочется что-то понять про MySQL.

Что можно узнать? Можно узнать про общую архитектуру mysql, движки для хранения и особенности хранения данных. Надо всегда использовать InnoDB, говорят нам авторы, если только нет какой-то супер специфичной причины делать иначе.

  • В MyISAM блокировка на запись по табличная, в InnoDB построчная, но!
  • Индекс в InnoDB строятся на основе двоичных деревьев. Из этого следует несколько выводов. Первый - именно по этому индекс используется, если в запросе используются полонки, указанные в индексе подряд, начиная с первой. Из-за этого InnoDB очень легко делать выборки по диапазанам данных.
  • Второй - блокируются не только строки, которые непосредственно изменяются, а вообще все строки, которые были выбраны индексом.
  • Первичный ключ всегда хранится прямо в индексе, другие колонки хранятся в индексе только если они в нем указаны. Что это значит? Это значит, что если выбирать только колонки, которые есть в индексе, можно избежать чтения самих строк с жесткого диска.
  • Во многих ситуациях производительность может резко падать из-за того, что MySQL не может проделать всю операцию в памяти, в этом случае данные пишутся во временную таблицу на диске, и там уже фильтруются/сортируются с соотвествующим пенальти по производительности. В этом случае надо гонять explain и смотреть, из-за чего так происходит
  • Оптимизацией запросов занимается сам Mysql, движки хранения могут ему только подсказать примерную оценку стоимости тех или иных операций. Как результат, не всегда выбираемая стратегия будет на самом деле самой быстрой.
  • Касательно оптимизаций, в MySQL за годы накопилось куча разных эвристик, которые оптимизируют запросы. Подстановка констант, переделка джойнов и еще много всякого.
  • Репликация в MySQL происходит с помощью бинлога, в который записываются все запросы в базе с поправкой на подставленные переменные, которые потом проигрываются на репликах мастера.
  • По курсорам, views и хранимым процедурам прошли вскользь, но я не фанат, как не фанат и сложных sql запросов.
  • Репликация - master/slave, master/master, которые по сути все-равно master/slave, типичные схемы.
  • Интересно про партицирование, которое оказалось не шардированием, про которое я подумал сначала, а именно что разбиением физического хранилища по признаку. Вроде полезно, но вполне возможно, что на этом этапе нужно уже другое хранилище использовать.
  • Про шардирование не было ничего mysql специфичного. Способ разбиения все-равно надо выбирать самому и поддерживать его в коде приложения.
  • Есть главы про бекапы и про тюнинг конфигурации, но я прошел их вскользь, просто потому, что их всегда можно прочитать потом при необходимости.

Как итог, отличная книжка, причем не только, чтобы понять, как именно писать высокопроизводительный mysql код (мне на данный момент кажется, что чем проще запросы использовать, тем лучше, а при такой схеме многие советы и техники не так релевантны. Авторы больше пишут про кейсы большого приложения с обозримым числом запросов, на оптимизацию которых имеет смысл тратить время и силы), сколько для того, чтобы в принципе понять, как работает эта бд внутри, после чего многие вопросы отпадают сами по себе.

3) Gen Z @ Work, David Stillman & Jonah Stillman

3 / 5

Наверное, мне просто не зашла манера написания авторов. Суть книги показать уникальные черты, которые отличают поколение Z (1995 - 2010). Если просуммировать в двух словах - родители влияют на своих детей, то, что одно поколение только осваивает, следующее считает уже естественным. Второй момент - книга написана для американского рынка, в случае России новейшая история внесла свои коррективы.

Одно интересное наблюдение, про которое я не думал раньше: люди растят друг друга в среднем через поколение. Т.е. Бэбибумеры, которые родились после войны, растили миллениалов, поколение икс, которое шло следом, растило уже поколение Икс. Соответственно, события, повлиявшие на родителей, наносили свой отпечаток на детей. Как пример, авторы говорят, что бэбибумеры и миллениалы - это гораздо более оптимистичные и позитивные поколения. На поколение икс пришлись 80е со своими кризисами, это было первое поколение, выросшее в обнимку с телевизором при обоих работающих родителях. Если среди родителей было много разводов, как в случае с поколением икс, то как реакция, в этом поколении частота разводов резко снизилась (опять же, в случае штатов). Поколение Z тоже выросло не в самое лучшее время, они видели, как их родители переживают кризис 2008 года, и мир они воспринимали уже в этом ключе.

На этом сильно интересная чатсь книги для меня закончилась, пошли конкретные описания повадок поколения Z. Стиль подачи - сын из поколения Z помогает отцу понять это поколение и заодно пишет с ним эту самую книгу и ведет бизнес, отгадайте какой. Да, они всем рассказывают про особенности поколений!

Что можно узнать про поколение Z? То, что ото первое поколение, имевшее аккаунт на фейсбуке или аналоге всю сознавшую жизнь и не представляющее жизнь без ютуба со всеми вытекающими. Если миллениалам в интернете комфортно, то для этого поколения это просто среда обитания. Это первое поколение, привыкшее к супер кастомизации, когда можно детально подобрать любую деталь жизни - не только одежду, но и круг общения, способ и тематику обучения, даже музыку по трекам, а не альбомами (тут я сразу вспомнил дивные плейлисты для винампа или вк, которые имел каждый русский подросток в середине 2000х). Это поколение не любит навешивания ярлыков, привыкло, что все их шаги так или иначе видны онлайн (те же онлайн дневники школьные) и поэтому ожидает подобного же отношения и на работе. Плюс, там же на работе им не нравится иметь фиксированный тайтл и набор обязанностей, хочется чего-то, специально под них. Дальше я книгу уже начал листать, потому чего-то принципиально нового для себя уже не открывал, слишком близкое поколение видимо.

Почему три? Да может быть и четыре, почему нет, но мне кажется, что эту книгу можно было бы сжать до пары хороших статей без потери качества, а так приходится делать выжимку из баек, написанных для каждой главы.

Tags: из прочитанного
Subscribe
  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 0 comments