Архив рубрики: Публикации

Как отключить залипание клавиш в Windows

Вы работаете на своем компьютере с Windows 11 или Windows 10, и операционная система внезапно решает включить Sticky Keys? Или, может быть, вы играете в свою любимую игру, а Windows решает свернуть ее и спросить что-нибудь о Sticky Keys? Происходит ли это каждый раз, когда вы несколько раз нажимаете клавишу SHIFT? Вам интересно, что такое Sticky Keys и как их отключить? Или вы уже все это знаете и уже отключили Sticky Keys, но Windows продолжает включать их каждый раз, когда вы запускаете компьютер или устройство? Прочтите это руководство и узнайте все ответы, которые вы ищете.

Что такое липкие ключи?

Вам интересно, что такое Sticky Keys и что они делают? Это функция специальных возможностей, присутствующая как в Windows 11, так и в Windows 10, призванная помочь людям, которым трудно удерживать две или более клавиш одновременно. Другими словами, липкие клавиши позволяют нажимать сочетания клавиш по одной клавише, а не одновременно.

Например, чтобы написать заглавную букву, необходимо одновременно с буквой, которую вы хотите набрать, удерживать клавишу SHIFT. Если у вас есть инвалидность, которая не позволяет вам это сделать, Sticky Keys может помочь. Если вы включите функцию «Залипание клавиш», то при нажатии клавиш-модификаторов, таких как CTRL, ALT, SHIFT или логотип Windows, клавиша остается активной до тех пор, пока не будет нажата другая клавиша. Таким образом, чтобы набрать что-то вроде заглавной буквы W, люди с ограниченными возможностями могут одновременно нажать SHIFT, а затем W вместо SHIFT+W. Кроме того, когда вы нажимаете эти клавиши-модификаторы, Windows издает звуковой сигнал, поэтому вы знаете, что Sticky Keys зарегистрировала клавишу-модификатор.

Хотите включить Sticky Keys?

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

Проблема: залипание клавиш во время игры.

Вы играете в игру, в которой вам нужно часто нажимать клавишу SHIFT, например, когда вы едете на лошади в «Ведьмак 3: Дикая Охота» или во время спринта в «Протоколе Каллисто». Проблема в том, что залипание клавиш срабатывает при пятикратном нажатии клавиши SHIFT. Это заставит Windows свернуть игру и отобразить диалоговое окно «Залипание клавиш», в котором вас спросят, хотите ли вы включить «Залипание клавиш». Затем говорится, что Sticky Keys позволяет использовать клавиши SHIFT, CTRL, ALT или клавиши с логотипом Windows, нажимая по одной клавише за раз. Очевидно, что это серьезно повлияет на ваш игровой опыт, чего вы не хотите.

Залипание клавиш во время игры

Когда вы играете в свою игру, а Windows решает выйти из игры и спросить вас о Sticky Keys, вы сразу же нажимаете Нет. К сожалению, это лишь временное решение. В следующий раз, когда вы повторно нажмете клавишу SHIFT, Windows снова прервет вашу игру, снова спросив то же самое! Это может быстро действовать вам на нервы, поэтому вот как решить эту проблему навсегда, навсегда отключив Sticky Keys.

Как отключить залипание клавиш

Есть два способа отключить Sticky Keys в Windows: либо из приложения «Настройки» в Windows 11 и Windows 10, либо из старой панели управления. В следующих главах этого руководства они рассматриваются один за другим, поэтому в зависимости от вашей операционной системы и предпочтений вы можете перейти к интересующему вас разделу:

Как отключить залипание клавиш в Windows 11

Если вы хотите отключить залипание клавиш в Windows 11, самый быстрый способ — щелкнуть или коснуться ссылки «Отключить это сочетание клавиш в настройках специальных возможностей клавиатуры», показанной в диалоговом окне «Залипание клавиш». Если его еще нет на вашем экране, нажмите клавишу SHIFT пять раз подряд, чтобы Windows 11 открыла его. Щелкнув (или коснувшись) этой ссылки, вы запустите приложение «Настройки» и перейдете на страницу «Клавиатура» из настроек специальных возможностей Windows 11.

Отключите это сочетание клавиш в настройках клавиатуры специальных возможностей.

Альтернативный способ — открыть приложение «Настройки» (Windows+I), выбрать «Доступность» на левой боковой панели и нажать или коснуться «Клавиатура» на правой панели.

Настройки клавиатуры из специальных возможностей Windows 11.

Независимо от того, щелкнули ли вы ссылку в диалоговом окне «Залипание клавиш» или проследовали путь через приложение «Настройки», теперь вы должны увидеть страницу «Клавиатура». Здесь щелкните или коснитесь записи «Закрепленные клавиши» в разделе «Залипание, фильтр и переключение клавиш». Убедитесь, что вы нажимаете саму запись, а не переключатель Вкл/Выкл справа от нее.

Запись Sticky Keys в специальных возможностях Windows 11

Первая настройка на странице «Залипающие клавиши» — это переключатель под названием «Сочетание клавиш для залипающих клавиш». Под ним в Windows 11 даже есть краткое описание, в котором говорится, что вы можете «нажать клавишу Shift 5 раз, чтобы включить или выключить залипание клавиш». Чтобы отключить функцию «Залипание клавиш» и больше никогда вас не беспокоить, выключите этот переключатель.

Как отключить залипание клавиш в Windows 11

Хотя липкие клавиши теперь навсегда отключены, вы также можете отключить фильтрацию клавиш. Как объясняет Microsoft, Filter Keys «устанавливает чувствительность клавиатуры, чтобы она могла игнорировать короткие или повторяющиеся нажатия клавиш». Если во время игры вы нажмете и удерживаете правую клавишу SHIFT в течение 8 или более секунд, Windows 11 может вмешаться и спросить, хотите ли вы использовать клавиши фильтра. Как и в случае с липкими клавишами, это может существенно повлиять на ваш игровой процесс. Если вам это не нужно, вернитесь на страницу «Специальные возможности» > «Клавиатура» в приложении «Настройки» и нажмите или коснитесь клавиши «Фильтр».вход. Убедитесь, что вы нажимаете саму запись, а не переключатель справа от нее.

Запись «Ключи фильтра» в разделе «Специальные возможности» Windows 11.

Вы попадете на страницу «Клавиши фильтра», где первой настройкой является переключатель под названием «Сочетание клавиш для клавиш фильтра». Чтобы они не вторгались в ваши игры каждый раз, когда вы удерживаете клавишу Shift в течение 8 секунд, отключите этот переключатель.

Как отключить фильтрацию клавиш в Windows 11

Вот и все! Теперь вы можете наслаждаться непрерывным игровым процессом, поскольку ни липкие клавиши, ни фильтрующие клавиши больше никогда вас не побеспокоят.

Как отключить залипание клавиш в Windows 10

Чтобы отключить залипание клавиш в Windows 10, щелкните или коснитесь ссылки с надписью «Отключить это сочетание клавиш в настройках клавиатуры специальных возможностей» в командной строке «Залипание клавиш». Если вы не видите его прямо сейчас, попробуйте нажать одну из клавиш SHIFT пять раз подряд, и он появится. Эта ссылка открывает приложение «Настройки» и позволяет перейти к параметрам клавиатуры из настроек специальных возможностей Windows 10.

Отключите это сочетание клавиш в настройках клавиатуры специальных возможностей.

Кроме того, вы также можете открыть приложение «Настройки Windows 10» и перейти в «Удобство доступа».

Простота доступа в настройках Windows 10

В разделе «Удобство доступа» выберите «Клавиатура» на левой боковой панели.

Выберите «Клавиатура» на левой боковой панели.

В правой части окна «Настройки» прокручивайте, пока не дойдете до раздела «Использовать липкие клавиши». Там снимите флажок «Разрешить запуск Sticky Keys с помощью сочетания клавиш». Это настройка, благодаря которой Windows 10 включает залипание клавиш каждый раз, когда вы нажимаете клавишу Shift пять раз.

Как отключить залипание клавиш в Windows 10

Возможно, вы также захотите отключить клавиши фильтра. Эта функция позволяет Windows 10 «игнорировать короткие или повторяющиеся нажатия клавиш и изменять частоту повторения клавиатуры». Если во время игры вы нажмете и удерживаете правую клавишу SHIFT в течение 8 или более секунд, Windows 10 может прервать вас и спросить, хотите ли вы включить клавиши фильтра. Если вы этого не хотите, отключите параметр «Разрешить запуск с помощью сочетания клавиш фильтра клавиш».

Как отключить фильтрацию клавиш в Windows 10

Это все, что вам нужно сделать в Windows 10, чтобы гарантировать, что ни липкие клавиши, ни фильтрующие клавиши не мешают вам играть в любимые игры.

Как отключить залипание клавиш с панели управления в Windows 11 или Windows 10

Старая панель управления предлагает другой способ отключить залипание клавиш. Более того, этот метод работает одинаково как в Windows 11, так и в Windows 10. Вот как это сделать:

Откройте панель управления и нажмите или коснитесь «Удобство доступа».

Простота доступа в панели управления

Затем нажмите или коснитесь ссылки «Изменить работу клавиатуры» в разделе «Центр специальных возможностей».

Измените работу клавиатуры

В окне «Упрощение использования клавиатуры» найдите раздел «Упрощение набора текста» и нажмите или коснитесь «Настроить липкие клавиши».

Настройте липкие клавиши в панели управления.

Снимите флажок «Включить залипание клавиш при пятикратном нажатии клавиши SHIFT» и нажмите или коснитесь кнопки «Применить».

Как отключить залипание клавиш в панели управления

Возможно, вы также захотите отключить клавиши фильтра. Если вы нажмете и удержите правую клавишу SHIFT в течение 8 секунд, Windows спросит вас, хотите ли вы включить клавиши фильтра. Особенно во время игр вам этого не нужно. Чтобы отключить фильтрацию клавиш, вернитесь к разделу «Упрощение использования клавиатуры» на панели управления и нажмите или коснитесь «Настроить фильтрацию клавиш».

Настройка ключей фильтра

Затем снимите флажок «Включить фильтрацию клавиш при нажатии правой клавиши SHIFT в течение 8 секунд» и нажмите или коснитесь «Применить» или «ОК», чтобы сохранить изменения.

Как отключить клавиши фильтра на панели управления

С этого момента липкие клавиши и клавиши фильтра не будут срабатывать при повторном нажатии клавиши SHIFT. Хотя другие проблемы или ошибки могут повлиять на ваш игровой процесс, по крайней мере вам удалось избавиться от надоедливых залипающих клавиш, верно?🙂

Почему вы хотите отключить Sticky Keys?

Теперь вы знаете, что такое Sticky Keys, а также знаете, как навсегда отключить Sticky Keys. Эта функция больше не должна раздражать вас при работе или играх на компьютере. Я должен признать, что Sticky Keys меня очень расстраивал при игре в некоторые видеоигры. Клавиша SHIFT часто используется в играх для выполнения различных действий, таких как бег, лазание, езда на лошадях или использование особых способностей. Поскольку вы несколько раз нажимаете клавишу SHIFT, Windows часто решает свернуть игру и спросить о залипающих клавишах, что может сильно раздражать. А вы? Почему вы решили отключить Sticky Keys? Дайте мне знать в разделе комментариев ниже.



2023-09-10T12:46:05
Вопросы читателей

Ping-Admin: Сервис для эффективного мониторинга и управления инфраструктурой

В современном мире, где информационные технологии становятся неотъемлемой частью бизнес-процессов, надежность и доступность сетевой инфраструктуры приобретают критическое значение. Именно здесь сервис Ping-Admin выходит на первый план, предоставляя широкий набор инструментов для мониторинга и управления сетевой инфраструктурой. Давайте рассмотрим подробнее, что делает Ping-Admin уникальным и какие преимущества он предоставляет. Читать

Сквозная аналитика: Ключевые сферы применения в современном бизнесе

Современный бизнес сталкивается с необходимостью постоянного анализа и оптимизации своей деятельности для достижения успеха. В этом контексте, инструменты аналитики играют ключевую роль. Среди них особое место занимает сквозная аналитика, которая предоставляет комплексное представление о процессах внутри организации. https://daria-dein.ru/ — Построение сквозной аналитики. Разработка системы согласно задачам бизнеса В данной статье мы рассмотрим, где и как применяется сквозная аналитика, и какие выгоды она приносит бизнесу.

 


  1. Маркетинг и реклама

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

 


  1. Продажи и конверсии

Сквозная аналитика помогает повысить эффективность продаж, позволяя отслеживать каждый этап воронки продаж — от первого контакта клиента до завершения сделки. Анализируя данные о поведении покупателей, компании могут оптимизировать свои стратегии продаж, улучшая конверсию и увеличивая выручку.

 


  1. Управление клиентским опытом

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

 


  1. Оптимизация производственных процессов

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

 


  1. Анализ финансовой деятельности

Эффективный анализ финансов — залог успешного бизнеса. Сквозная аналитика предоставляет комплексный инструментарий для мониторинга финансовых показателей. Она позволяет в реальном времени отслеживать бюджеты, анализировать затраты и доходы, прогнозировать финансовые показатели на будущее.

 

Заключение

Сквозная аналитика представляет собой мощный инструмент, позволяющий компаниям анализировать свою деятельность в комплексе и принимать обоснованные решения. От маркетинга и продаж до управления клиентским опытом и финансовой деятельностью — ее применение неограничено. Компании, освоившие этот инструмент, имеют значительное преимущество перед конкурентами, что позволяет им быть более адаптивными и эффективными в современной бизнес-среде.



2023-09-09T16:43:53
Бизнес

Параллелизм на уровне потоков (TLP)

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

 

Что такое параллелизм на уровне потоков?

Параллелизм на уровне потоков использует преимущества присущего программным программам параллелизма. Традиционно процессоры выполняли инструкции последовательно, ограничивая потенциал ускорения, особенно в приложениях с изначально распараллеливаемыми задачами. TLP вносит сдвиг в парадигму, позволяя процессору выполнять несколько потоков одновременно, эффективно разбивая сложные задачи на более мелкие, более управляемые фрагменты, которые могут обрабатываться одновременно.

 

Типы параллелизма на уровне потоков

Ниже приведены три типа параллелизма на уровне потоков:

  • Параллелизм на уровне инструкций (ILP): Эта форма TLP фокусируется на параллельном выполнении нескольких инструкций из одного потока. Такие методы, как конвейеризация и суперскалярные архитектуры, подпадают под эту категорию.
  • Параллелизм на уровне данных (DLP): DLP предполагает одновременное выполнение одной и той же операции над несколькими элементами данных, что часто наблюдается в архитектурах SIMD (Single Instruction, Multiple Data).
  • Параллелизм на уровне задач (TLP):TLP относится к одновременному выполнению нескольких независимых потоков. Это особенно актуально в современном контексте, поскольку соответствует тенденции увеличения количества процессорных ядер.

 

Механизмы, позволяющие использовать параллелизм на уровне потоков (TLP)

Механизмы использования параллелизма на уровне потоков (TLP) приведены ниже:

  • Многоядерные процессоры: Одним из наиболее ощутимых воплощений TLP является появление многоядерных процессоров. Эти процессоры оснащены несколькими независимыми вычислительными ядрами на одном чипе, каждое из которых способно выполнять потоки параллельно.
  • Одновременная многопоточность (SMT): SMT, часто называемая гиперпоточностью, позволяет одному физическому ядру выполнять несколько потоков одновременно, эффективно повышая параллелизм на уровне потоков на уровне ядра.
  • Планирование задач и балансировка нагрузки: Эффективные алгоритмы планирования потоков и балансировки нагрузки гарантируют оптимальное распределение задач по доступным ядрам, максимизируя использование ресурсов.

 

Значение параллелизма на уровне потоков (TLP):

Ниже приведены некоторые значения параллелизма на уровне потоков (TLP):

  • Масштабирование производительности: TLP стал инструментом для поддержания повышения производительности в условиях физических ограничений, таких как энергопотребление и тактовая частота.
  • Использование ресурсов: TLP помогает эффективно использовать вычислительные ресурсы, сокращая время простоя и повышая общую пропускную способность системы.
  • Параллельные вычисления: TLP лежит в основе параллельных вычислений, которые жизненно важны для решения сложных задач, таких как научное моделирование, анализ данных и искусственный интеллект.
  • Пользовательский интерфейс: Улучшения, основанные на TLP, приводят к более быстрому времени отклика в приложениях, способствуя более плавному и отзывчивому пользовательскому интерфейсу.

 

Проблемы и соображения, связанные с параллелизмом на уровне потоков (TLP):

Закон Амдала: Несмотря на свои преимущества, TLP сталкивается с уменьшающейся отдачей по мере увеличения количества потоков из-за последовательных частей программы.

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

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

Заключение

Параллелизм на уровне потоков стал краеугольным камнем современной компьютерной архитектуры, позволяя процессорам использовать возможности нескольких потоков для достижения повышенной производительности. Поскольку программные приложения становятся все более сложными и требовательными, TLP продолжает играть ключевую роль в формировании эволюции процессоров, позволяя им удовлетворять постоянно растущие вычислительные потребности современного мира. От многоядерных процессоров до гиперпоточности, TLP является движущей силой неустанного стремления к более быстрым и эффективным вычислениям.

 

Часто задаваемые вопросы о параллелизме на уровне потоков (TLP):

1. Чем TLP отличается от других форм параллелизма?

TLP фокусируется на одновременном выполнении нескольких независимых потоков, в отличие от других форм параллелизма, таких как параллелизм на уровне команд (ILP) и параллелизм на уровне данных (DLP), которые имеют дело с параллельным выполнением инструкций или обработкой данных в рамках одного потока.

2. Какова роль многоядерных процессоров в TLP?

Многоядерные процессоры воплощают TLP, имея несколько независимых вычислительных ядер на одном чипе. Эти ядра могут выполнять разные потоки одновременно, эффективно увеличивая доступную мощность параллельной обработки.

3. Что такое одновременная многопоточность (SMT)?

Одновременная многопоточность, часто известная как гиперпоточность, — это технология, которая позволяет одному физическому ядру выполнять несколько потоков одновременно. Это улучшает параллелизм на уровне потоков на уровне ядра и может повысить общую пропускную способность процессора.

4. Как TLP способствует повышению производительности?

TLP оптимизирует использование ресурсов, позволяя нескольким потокам выполняться одновременно, сокращая время простоя процессора. Это приводит к более быстрому завершению задачи и повышению общей производительности системы.

5. С какими проблемами сталкивается TLP?

Отдача от TLP уменьшается по мере увеличения количества потоков, поскольку определенные части программы могут оставаться изначально последовательными из-за зависимостей. Накладные расходы на синхронизацию и конкуренция за совместно используемые ресурсы, такие как кэш и память, также могут влиять на производительность.



2023-09-09T09:12:03
Программирование

GNU Coreutils 9.4 уже выпущен, и это его новые возможности.

GNU Coreutils

Coreutils — это программный пакет, разработанный проектом GNU, который содержит несколько основных инструментов, таких как cat, ls и rm, необходимых для Unix-подобных операционных систем.

Новая версия GNU Coreutils 9.4 уже выпущена ипоставляется с различными улучшениями производительности, изменение поведения, исправления ошибок и многое другое. В этом выпуске освещаются изменения, внесенные в cp -v и mv -v, а также тот факт, что время безотказной работы теперь поддерживает Android и многое другое.

Те, кто не знает о пакете Coreutils, должны знать, что это Это комбинация трех предыдущих пакетов.: файловые утилиты (fileutils), утилиты интерпретатора команд (shellutils) и утилиты обработки текста (textutils).



Читать

Оптимизация производительности баз данных PostgreSQL

В работе любой программист или системный администратор встречается со страшной проблемой — тормозит база. Сервер работает медленно, происходит нечто непонятное, пользователи жалуются, клиент ругается. Я не зря написал, что проблема является страшной, в первую очередь потому, что решение здесь будет неочевидное и лежит оно не на поверхности. На производительность базы может влиять множество параметров.




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




Ниже перечислю этапы, по которым вам следует пройтись, чтобы понять причины проблемы.




1. Смотрим, что было сделано раньше.




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




И желательно, чтобы основной файл конфигурации БД postgresql.conf также был в гите. Тогда вы сможете в том числе контролировать и изменение настроек базы.




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




Особенно если речь идёт об изменениях структуры базы данных, добавлении обработчиков, пользовательских функций, процедур. Эти работы должны делать скрипты, которые, в свою очередь, должны версионироваться.




2. Смотрим, что происходит в операционной системе.




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




Надеюсь, база данных у вас установлена на Linux-машине. Если нет, то советую подумать о переезде на Linux.




Вспомните, какие антивирусы или сетевые экраны вы устанавливали. Посмотрите, какие приложения или сервисы подняты на сервере, кроме базы данных. Оптимальный подход — держать на сервере только базу данных и ничего лишнего. Благо, текущие технологии по виртуализации позволяют это сделать очень быстро и просто.




3. Проверяем оборудование.




Опять же, если в операционной системе вы ничего не меняли, у вас уже стоит Linux, стоит обратить внимание на оборудование. Сегодня некоторые производители железа грешат качеством и нельзя надеяться на то, что память или жёсткий диск не выйдут из строя в самый неподходящий момент. Поэтому, первое на что советую обратить внимание:




htop




Если вы видите, что процессор загружен на 70% и более и при этом загружены все ядра, то подумайте об увеличении мощности. Процессоры сейчас дешёвые, а если вы используете виртуализацию, то добавьте вашей базе дополнительное количество ядер. Скорее всего, вашей базе перестало хватать мощностей из-за возросшей нагрузки и стоит подумать о модернизации сервера.




iostat –dx




Обратите внимание на последнюю колонку. Она вам даст представление о загрузке дисковой подсистемы. Если показатель приближается к 100%, то нужно подумать об увеличении памяти. Скорее всего, у вас очень большой размер базы данных, а оперативки на сервере для обработки данных слишком мало.




Помните, что расходы по оптимизации запросов или кода приложения не окупятся, если у вас присутствуют проблемы с оборудованием.




4. Установите систему мониторинга.




Попробуйте установить систему мониторинга Percona https://www.percona.com/software/database-tools/percona-monitoring-and-management. Её интерфейс показан на картинке выше. Она бесплатная и позволит вам быстро оценить динамику нагрузки на сервер и покажет все главные показатели работы сервера.




5. Проанализируйте файловое хранилище.




Запустите команду:




iostat –x




Посмотрите на колонки с постфиксов _await. Они говорят вам о показателе f/s latency. Если показатель больше 50 мс без нагрузки, то стоит задуматься. Если более 100 — то стоить предпринимать срочные меры.




Причиной высоких цифр может быть неверная настройка гипервизора или работа базы через NAS. Последнего подхода в проектировании нужно избегать.




6. Анализируем pg_stat_activity.




Итак, мы проверили сервера, оборудование, ничего необычного не нашли. Переходим непосредственно к тюнингу базы.




Первое, что приходит на ум — представление pg_stat_activity.




Сначала проверьте в настройках базы параметр track_activity_query_size, по умолчанию он выставлен на 1024. Увеличьте его как минимум в 2-3 раза, в большинстве случаев его не хватает.




Теперь ищем, какая активность у нас происходит в базе. Может всё гораздо проще и кто-то запустил сложный запрос и вам стоит остановить этот скрипт. Смотрим активные запросы длительностью более 5 секунд:




SELECT now() - query_start as "runtime", usename, datname, wait_event, state, query FROM pg_stat_activity WHERE now() - query_start > '5 seconds'::interval and state='active' ORDER BY runtime DESC;




Также могут вызвать подозрения запросы с состоянием «idle». А ещё хуже с состоянием «idle in transaction».




Такие запросы можно остановить следующими командами:




SELECT pg_cancel_backend(procpid);




SELECT pg_terminate_backend(procpid);




Первый остановит активные запросы, второй с типом idle.




Теперь стоит посмотреть, есть ли у вас зависшие трансакции. Выполняем запрос:




SELECT pid, xact_start, now() - xact_start AS duration FROM pg_stat_activity WHERE state LIKE '%transaction%' ORDER BY 3 DESC;




Помните, трансакции должны выполняться моментально. Из ответа смотрите на duration. Если трансакция висит несколько минут, а тем более часов, значит, приложение повело себя некорректно, оставив трансакцию незавершённой. А это влияет на репликацию, на работу VACUUM, WAL.




7. Анализируем pg_stat_statements.




Если раньше мы проверяли активные запросы, то теперь самое время проанализировать то, что было раньше. В этом нам поможет представление pg_stat_statements. Но обычно по умолчанию оно отключено, нам следует его активировать. Для этого в конфиге базы вставляем следующую строчку:




shared_preload_libraries = 'pg_stat_statements'




Затем в текущем сеансе работы с базой, запускаем команду:




create extension pg_stat_statements;




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




С помощью него вы можете получить статистику по уже выполненным запросам.




Например, мы можем получить запросы с максимальной загрузкой процессора такой командой:




SELECT substring(query, 1, 50) AS short_query, round(total_time::numeric, 2) AS total_time, calls, rows, round(total_time::numeric / calls, 2) AS avg_time, round((100 * total_time / sum(total_time::numeric) OVER ())::numeric, 2) AS percentage_cpu FROM pg_stat_statements ORDER BY total_time DESC LIMIT 20;




А максимально долгие запросы — вот такой:




SELECT substring(query, 1, 100) AS short_query, round(total_time::numeric, 2) AS total_time, calls, rows, round(total_time::numeric / calls, 2) AS avg_time, round((100 * total_time / sum(total_time::numeric) OVER ())::numeric, 2) AS percentage_cpu FROM pg_stat_statements ORDER BY avg_time DESC LIMIT 20;




Таким образом, мы можем понять, какие запросы сильно влияют на нагрузку нашей базы данных и оптимизировать их при необходимости.




8. Работаем с представлением pg_stat_user_tables




Таблица pg_stat_user_tables — ключевое конкурентное преимущество по сравнению с другими БД. С помощью неё мы, например, получить информацию о последовательном чтении с диска:




SELECT schemaname, relname, seq_scan, seq_tup_read, seq_tup_read / seq_scan AS avg, idx_scan FROM pg_stat_user_tables WHERE seq_scan > 0 ORDER BY seq_tup_read DESC LIMIT 25;




В верхней части таблиц будут как раз те самые операции, которые читали данные с диска. Если у таблицы больше 2000 записей, то такие операции должны производиться по индексу, а не с диска. Т.е. вы получите в первую очередь те запросы, которые вам потребуется оптимизировать.




Также вам следует посмотреть кеширование этих таблиц по представлению pg_statio_user_tables.




В этом вам помогут колонки heap_blks… и idx_blks…




9. Настраиваем память для PostgreSQL.




В зависимости от настроек сервера, настройки у вас будут примерно следующими:




effective_cache_size - 2/3 RAM
shared_buffers = RAM/4
temp_buffers = 256MB
work_mem = RAM/32
maintenance_work_mem = RAM/16




Но я рекомендую пользоваться специальными конфигураторами:




http://pgconfigurator.cybertec.at/ — продвинутый конфигуратор от Cybertec.




https://pgtune.leopard.in.ua/ — онлайн версия классического конфигуратора pgtune.




Эти инструменты помогут вам поставить нужные настройки за вас.




10. Настраиваем дисковую подсистему.




Если вам ничего больше ничего не помогло, то в крайнем случае вы можете выставить следующие настройки:




fsync=off
full_page_writes=off
synchronous_commit=off




Но в этом случае вы потеряете в надёжности хранения данных. Но если у вас PostgreSQL не является единственной системой по обработке данных и база асинхронно копируется в аналитические системы, то с такими настройками можно жить. Так как они снижают нагрузку на диск. Немного поясню по данным параметрам:




fsync – данные журнала принудительно сбрасываются на диск с кеша ОС.




full_page_write – 4КБ ОС и 8КБ Postgres.




synchronous_commit – транзакция завершается только когда данные фактически сброшены на диск.




checkpoint_completion_target – чем ближе к единице тем менее резкими будут скачки I/O при операциях checkpoint.




Ещё есть effective_io_concurrency – по количеству дисков и random_page_cost – отношение рандомного чтения к последовательному.




Впрямую на производительность не влияют, но могут существенно влиять на работу оптимизатора.




11. Настраиваем оптимизатор.




join_collapse_limit – сколько перестановок имеет смысл делать для поиска оптимального плана запроса. Интересный параметр. По умолчанию установлено 10, может имеет смысл повысить его в 10-20 раз.




default_statistics_target — число записей просматриваемых при сборе статистики по таблицам. Чем больше, тем тяжелее собрать статистику. Статистика нужна, к примеру для определения «плотности» данных.




online_analyze - включает немедленное обновление статистики
online_analyze.enable = on
online_analyze.table_type = "all"
geqo – включает генетическую оптимизацию запросов
enable_bitmapscan = on
enable_hashagg = on
enable_hashjoin = on
enable_indexscan = on
enable_indexonlyscan = on
enable_material = on
enable_mergejoin = on
enable_nestloop = on
enable_seqscan = on
enable_sort = on
enable_tidscan = on




12. Оптимизируем запросы.




Итак, вы нашли тяжёлые запросы, делаем по ним explain или analyze и первое на что вам следует обратить внимание — на следующие фразы:




— Seq Scan — значит, что запрос делается через последовательный перебор строк таблицы.




— Nested Loops — соединение с вложенными циклами.




Например, вас может насторожить следующий ответ базы:




Seq Scan ON test (cost=0.00..40.00 ROWS=20)




В ответе мы также видим, сколько строк будет обработано, а также стоимость первой строки..всех строк. Он считается достаточно оригинально, здесь стоит смотреть в относительном сравнении.




Также если Seq Scan по таблице, где rows более нескольких тысяч и при этом есть FILTER – в этом случае явно нужно посмотреть на поля в FILTER и найти подходящий индекс. Если не нашли – бинго, то одну из проблем вы решили.




Подробно описывать оптимизацию запросов я описывать не буду, это тема отдельной статьи.




Логика чтения плана запроса проста:




1) Смотрим на самый большой cost оператора




2) Это Seq Scan или nested loops?




3) Смотрим следующий по стоимости оператор




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




Для чтения планов рекомендую использовать следующий сервис:





https://tatiyants.com/pev




Что если проблема воспроизводится на проде?




В этом случае, вам надо воспользоваться параметром auto_explain. Он позволяет складировать ответ оптимизатора в одной папке. Включается следующим параметром:




session_preload_libraries = 'auto_explain'
auto_explain.log_min_duration = '3s‘
auto_explain.log_analyze = true




Теперь нам понадобится файлы вывести в красивом виде. В этом нам поможет pgBadger. Генерирует красивый html, но в настройках «можно утонуть».





https://github.com/darold/pgbadger




Вот так выглядит самая простая настройка:




pgbadger -j 4 -p '%t [%p]:[%l-1]' /var/log/postgresql/postgresql-9.6-main.log -o bad.html




На Prod auto_explain лучше не включать, или включать в крайнем случае и на короткое время. В случаях, если у вас нет просадки по ресурсам.




Стоит выделить наиболее часто встречающиеся ошибки:




  • Поиск по базе с использованием LIKE ‘%spoon%’. В этом случае надо подумать о переносе поиска в ElasticSearch. Или использовать FULL TEXT SEARCH.



  • Не внедрена система кэширования. Тогда стоит посмотреть на эту технологию: https://github.com/ohmu/pgmemcache. После скачивания и установки проделываем следующее:




shared_preload_libraries = ‘pgmemcache’
CREATE EXTENSION pgmemcache;
memcache_server_add('hostname:port'::TEXT)




Использование:




memcache_add(key::TEXT, value::TEXT)
newval = memcache_decr(key::TEXT)
memcache_delete(key::TEXT)




Если нужно кэширование внутри СУБД или временную таблицу в памяти. Но часто удобно использовать одну ORM или фреймворк имеет ограничения, или просто нужно оперативно заменить таблицу на inmemory KV хранилище.




— PostgreSQL используется в качестве OLAP. Самый простой вариант — быстро перенести данные в columnstore. https://github.com/citusdata/cstore_fdw




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




Источник: https://sergeyem.ru/blog/68



2023-09-09T02:47:51
Software