Skip to content

Instantly share code, notes, and snippets.

View mizhka's full-sized avatar

Michael Zhilin mizhka

  • PostgresPro
  • Moscow
View GitHub Profile
@mizhka
mizhka / pg-indcheckxmin.md
Last active March 28, 2024 13:46
PostgreSQL may ignore index

PostgreSQL (12-16) may ignore your fresh built index due to long-running transaction in another session. It's since 2007, introduced by HOT optimization. Look at pg_index.indcheckxmin of your index.

First session:

postgres=# begin;
BEGIN
postgres=*# select txid_current();
 txid_current
--------------
  10008974883
@mizhka
mizhka / gist:e795d65cda08a203d6e48ab71d493e6e
Last active January 30, 2024 17:02
Тестовое задание

Задача

Сделать отчёт о производительности вставки данных в СУБД PostgreSQL

  • написать на любом языке программу вставки данных в PostgreSQL
  • выполнить замер на 10 минут, собрать метрики, сделать профилирование и составить отчёт о производительности вставки
  • тест проведен на OS Linux (Debian/Ubuntu) и PostgreSQL 16
  • отчёт в формате Markdown

Базовые требования

  • Можно вставлять любые фейковые данные
  • Приложение должно принимать два параметра:
@mizhka
mizhka / proxmox-perf.yml
Last active February 14, 2024 16:23
Ansible playbook for MaxPerformance
- name: tune operating system
hosts: all
become: true
vars:
sysctl_settings:
- { key: 'vm.swappiness', value: '3'}
- { key: 'kernel.sched_autogroup_enabled', value: '0'}
- { key: 'kernel.sched_migration_cost_n', value: '50000000'}
pkgs:
- cpufrequtils
@mizhka
mizhka / xact_timing.awk
Created December 1, 2022 09:23
Transaction information from pg_waldump
#!/usr/bin/awk -f
function process_pgclass (line) {
split(line,field,";")
relid2name[field[8]] = field[2]
#printf("'%s' %s\n", field[8], field[2])
return
}
BEGIN {
@mizhka
mizhka / pgflame.sh
Last active November 18, 2022 20:31
FlameGraph for PostgreSQL with steroids
#/usr/bin/env sh
FLAMEHOME=/home/mizhka/repo/fbsd/FlameGraph
${FLAMEHOME}/stackcollapse-perf.pl $1 | sort | grep Postgre | \
sed 's#postmaster;_start;__libc_start_main;main;PostmasterMain;\[postgres\];##g' | \
sed 's#postmaster;_start;__libc_start_main;main;PostmasterMain;\[unknown\];##g' | \
sed 's#postmaster;\[postgres\];##g' | \
sed 's#postmaster;\[unknown\];##g' | \
sed 's#postgres;\[postgres\];##g' | \
@mizhka
mizhka / poudriere_reverse_proxy.lst
Created February 8, 2021 10:40
poudriere behind reverse proxy
# Place these sections into the relevant nginx.conf or included files sections.
worker_processes 1;
events {
worker_connections 1024;
}
http {
# Allow gzipping js, css, log, svg and json files.
% sysctl dev.pcm
dev.pcm.1.bitperfect: 0
dev.pcm.1.buffersize: 65536
dev.pcm.1.rec.vchanformat: s16le:2.0
dev.pcm.1.rec.vchanrate: 48000
dev.pcm.1.rec.vchanmode: fixed
dev.pcm.1.rec.vchans: 1
dev.pcm.1.rec.autosrc: 2
dev.pcm.1.rec.32bit: 24
dev.pcm.1.%parent: hdaa0
@mizhka
mizhka / brother_lpdwrapper_DCP1610W
Created December 22, 2019 09:40
DCP1610w filter patched for FreeBSD (location - /usr/local/libexec/cups/filter/)
#! /bin/sh
#
# CUPS filter for DCP1610W
# Copyright Brother Industries,Ltd 2006-2014
#
# Ver1.05
# This program is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by the Free
# Software Foundation; either version 2 of the License, or (at your option)
@mizhka
mizhka / dhcpd.conf
Last active March 1, 2022 12:47
Jail+vnet
# dhcpd.conf
# option definitions common to all supported networks...
option subnet-mask 255.255.255.0;
default-lease-time 600;
max-lease-time 7200;
subnet 192.168.20.0 netmask 255.255.255.0 {
range 192.168.20.2 192.168.20.40;
option domain-name-servers 192.168.20.1;
option routers 192.168.20.1;
@mizhka
mizhka / openconnect
Last active August 26, 2019 13:45
OpenConnect FreeBSD rc script
#!/bin/sh
# $Id$
#
# $FreeBSD$
#
# PROVIDE: openconnect
# REQUIRE: NETWORKING
# KEYWORD: shutdown
#
# Add the following lines to /etc/rc.conf.local or /etc/rc.conf to enable openconnect