Skip to content

Instantly share code, notes, and snippets.

View lesovsky's full-sized avatar
😉
Don't stop

Lesovsky Alexey lesovsky

😉
Don't stop
  • Postgres Pro
  • Yekaterinburg, Russian Federation
View GitHub Profile
@lesovsky
lesovsky / bgwr-ckpt-report.sql
Created March 27, 2017 13:45
Report query for PostgreSQL' bgwriter/checkpointer.
SELECT
now()-pg_postmaster_start_time() "Uptime", now()-stats_reset "Since stats reset",
round(100.0*checkpoints_req/total_checkpoints,1) "Forced checkpoint ratio (%)",
round(np.min_since_reset/total_checkpoints,2) "Minutes between checkpoints",
round(checkpoint_write_time::numeric/(total_checkpoints*1000),2) "Average write time per checkpoint (s)",
round(checkpoint_sync_time::numeric/(total_checkpoints*1000),2) "Average sync time per checkpoint (s)",
round(total_buffers/np.mp,1) "Total MB written",
round(buffers_checkpoint/(np.mp*total_checkpoints),2) "MB per checkpoint",
round(buffers_checkpoint/(np.mp*np.min_since_reset*60),2) "Checkpoint MBps",
round(buffers_clean/(np.mp*np.min_since_reset*60),2) "Bgwriter MBps",
@lesovsky
lesovsky / postrgesql-autovacuum-queue-detailed.sql
Created April 10, 2017 08:39
postrgesql-autovacuum-queue-detailed
WITH table_opts AS (
SELECT
c.oid, c.relname, c.relfrozenxid, c.relminmxid, n.nspname, array_to_string(c.reloptions, '') AS relopts
FROM pg_class c
INNER JOIN pg_namespace n ON c.relnamespace = n.oid
WHERE c.relkind IN ('r', 't') AND n.nspname NOT IN ('pg_catalog', 'information_schema') AND n.nspname !~ '^pg_temp'
),
vacuum_settings AS (
SELECT
oid, relname, nspname, relfrozenxid, relminmxid,
@lesovsky
lesovsky / .gitlab-ci.yml
Last active December 31, 2023 15:42
docker-compose with postgresql replication (no volumes, no scripts)
image: golang:1.21.0
stages:
- test
tests/integration:
stage: test
parallel:
matrix:
- VERSION:
- "16-alpine3.18"
@lesovsky
lesovsky / main.md
Created October 13, 2023 04:00
Integration Readiness Review

Integration Readiness Review

Статус: Черновик

Цель

Для интеграции стороннего компонента в основной продукт, этот компонент должен удовлетворять набору требований:

  • стабильность и качество
  • принадлежность и сопровождаемость
  • документация
@lesovsky
lesovsky / simple-nicstat.c
Created December 2, 2015 18:50
Simple nicstat based on /proc/net/dev stats
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdbool.h>
#include <sys/socket.h>
#include <sys/ioctl.h>
#include <netinet/in.h>
#include <linux/sockios.h>
#include <net/if.h>
#include <linux/ethtool.h>
@lesovsky
lesovsky / mmap-write-locking-with-semaphore.c
Created July 7, 2015 17:04
Simple read/write on mmaped area with semaphore locks.
/*
* use -lpthread when build.
*/
#include <semaphore.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <sys/mman.h>
#include <sys/types.h>
@lesovsky
lesovsky / append-strings-with-snprintf.c
Created July 15, 2016 18:52
How-to append strings using snprintf (without strcat/strncat).
#include <stdio.h>
#include <string.h>
#define LOC_MAXLEN 13
int main (void)
{
char dest[LOC_MAXLEN];
snprintf(dest, LOC_MAXLEN, "%s%s", "abc", "def");
@lesovsky
lesovsky / publicating-go-application-on-github.md
Created February 15, 2021 05:40
Publicating Golang application on GitHub.

Publicating Golang application on GitHub.

  • Makefile
  • Dockerfile
  • Github Actions
  • Goreleaser

Makefile

  • requires Git tags
  • application must work with imported Git tags
@lesovsky
lesovsky / postgresql-13.md
Created August 11, 2021 11:38
PostgreSQL 13

PostgreSQL 13

Major features:

  • Оптимизация хранения и производительности за счет дедупликации в B-tree индексах.
  • Улучшение производительности запросов с использованием агрегатов или работающих с партицонированными таблицами.
  • Улучшенное планирование запросов с использованием расширенной статистики.
  • Параллельное вакуумирование индексов.
  • Инкрементальная сортировка.
@lesovsky
lesovsky / ncurses-get-key-code.c
Last active April 8, 2022 03:28
Get key code with ncurses.
#include <ncurses.h>
int main()
{
initscr();
keypad(stdscr, true); //Включаем режим чтения функциональных клавиш
noecho(); //Выключаем отображение вводимых символов, нужно для getch()
halfdelay(100); //Устанавливаем ограничение по времени ожидания getch() в 10 сек
printw("Press F2 to exit.\n");