#postgresql
5 scoperte · Scoperte scelte dal web aperto, dalle più recenti.
-
Шардирование подождёт: что сделать, когда база тормозит
Привет, Хабр! Я Михей, пишу на Go, собираю свои системы и рассказываю, где они ломались, пока не заработали. Сегодня про базу, которую слишком рано записывают в виноватые. Когда сервис начинает тормозить, у кого-то первая мысль одна: база не вывозит, пора шардировать. Знакомо? А между «тормозит» и «шардируем» на деле лежит несколько шагов, которые стоят заметно дешевле. Про них почему-то вспоминают в последнюю очередь. Теорию пересказывать не стал. Я прогнал всё на стенде и записал, сколько каждый шаг реально даёт, чтобы ты не гадал. Сначала разберём, что делать заранее, чтобы до беды не дошло
Habr · RU
-
[Перевод] Сеансовая авторизация на чистом Postgres: пишем с нуля (без сервиса авторизации)
Обработку входа в систему можно организовать и без сервиса авторизации. Можно с нуля написать полноценную систему аутентификации, работающую на основе сеансов. Для этого портребуется связать базу данных PostgreSQL с веб-приложением — и такая конструкция будет работать с любым фронтендом, будь то JavaScript, фреймворк, Java, ещё что-то. Логика авторизации заключена в базе данных, поэтому не важно, какой именно фреймворк используется на фронтенде. В этом руководстве я расскажу, как реализовать систему аутентификации на основе сеансов. Для этого нам понадобится пара простейших расширений Postgres
Habr · RU
-
[Перевод] Сотни миллионов лишних запросов в неделю: что кодинг-агент нашёл в трейсах Sentry
UPDATE, который выполнялся около 10 тысяч раз в секунду, почти исчез. Выборка из истории статусов у самой загруженной группы на зеркале базы ускорилась с 274 мс при прогретом кэше до 0,4 мс. Такие места автор нашёл вместе с кодинг-агентом: подключил его к трейсам продакшена Sentry и короткими вопросами направлял поиск. Вместе правки убрали сотни миллионов запросов в неделю. В статье показано, какие подсказки давал человек, как изменения проверялись через EXPLAIN ANALYZE и какие цифры получились. Читать далее
Habr · RU
-
MySQL 和 PostgreSQL 中的时间戳:Go 和 Java 访问时的坑
同样叫 timestamp,MySQL 和 PostgreSQL 的含义完全不同:一个是绝对时刻,一个是墙钟时间,正好相反。踩坑重灾区,也是面试高频题。这篇文章把两者放在一起对齐比较,并且提供了 Go 语言和 Java 语言应用访问数据库时间类型字段的坑。 前四节讲数据库侧(类型语义与对照),后四节讲应用侧(时间从应用流到列的链路、Go 与 Java 驱动的行为、可直接抄的配置清单)。 一、先分清两种语义 一切混乱的根源是"时间"这个词同时指两样东西: 绝对时刻(instant) :世界上唯一的一个瞬间,比如 2026-09-05 00:00:00 UTC 。下单、日志、消息发送用它。任何时区看到的都是同一个点,只是显示不同。 墙钟时间(wall time) :挂钟上的读数,比如"早上 9 点开会"。不带时区就没有唯一时刻,但业务要的就是这个字面值:每天 9:00 的闹钟、营业时间、生日、定时任务。 四种数据库类型各占一边: 绝对时刻 墙钟时间 MySQL TIMESTAMP DATETIME PostgreSQL timestamptz timestamp 名字陷阱就在这张表里:MySQL 的 TIMESTAMP 对应 PG 的 timestamptz ,不是 PG 的 timestamp 。跨库迁移或写 ORM 时极易搞反。后面所有内容都是这张表的展开。
鸟窝 · ZH