Роман Теличко

Заметки веб-разработчика/админа

PostgreSQL. Список таблиц с очень частой записью на диск

// Апрель 5, 2013 | 757 просмотров | комментариев (0)

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

SELECT
    schemaname                                      AS schema,  -- схема
    relname                                         AS table,   -- таблица
    pg_size_pretty( pg_relation_size(relid) )       AS tsize,   -- размер
    n_tup_upd + n_tup_ins + n_tup_del               AS write,   -- операций записи (I/U/D)
    seq_scan + idx_scan                             AS read,    -- всего чтений
    n_tup_ins                                       AS ins,     -- операции INSERT
    n_tup_upd                                       AS upd,     -- операции UPDATE
    n_tup_del                                       AS del      -- операции DELETE
FROM
    pg_stat_user_tables
ORDER BY
    ( n_tup_upd + n_tup_ins + n_tup_del ) DESC

Кстати, так вы можете получить список всех индексов, а так — список неиспользуемых индексов.

Как проверить диск на ошибки и бэд-сектора в Linux

// Апрель 3, 2013 | 85519 просмотров | комментариев (1)

Примером хорошего тона и здравого смысла является периодическая проверка диска на битые сектора (бэд-сектора, badblocks) и обычная проверка диска на ошибки записи и т.п.
Разберёмся что такое битые сектора.
Любимая Википедия говорит следующее:

Бэд-сектор, Повреждённый сектор — сбойный (не читающийся) или ненадежный сектор диска; кластер, содержащий сбойные сектора, или кластер помеченный таковым в структурах файловой системы операционной системой.

Следовательно, если в битом секторе были данные, то их ещё возможно восстановить, пока битых секторов не стало слишком много для конкретного файла.
Читать далее…

ТОП 16 PHP функций, что я использую каждый день

// Март 30, 2013 | 1761 просмотров | комментариев (0)

Решил написать ТОП 16 PHP функций, что я использую каждый день.
Будет полезно как начинающим разработчикам, так и профессионалам (хотя у них этот список может отличаться).
Это MUST HAVE функции, что обязательно нужно знать и уметь ими оперировать.
Читать далее…

Соответствия команд SVN и Git

// Март 14, 2013 | 401 просмотров | комментариев (0)

Я создал небольшую шпаргалку соответствий команд систем управления версиями SVN/Subversion и Git. Пользуйтесь! 😉

svnadmin create repo
 
git init
git add .

svn import file://repo
git commit

svn diff | less
git diff

svn diff -rrev path
git diff rev path

patch -p0
git apply

svn status
git status

svn revert path
git checkout path

svn add file
git add file

svn rm file
git rm file

svn mv file
git mv file

svn commit
 
git commit -a
git push remote

svn log | less
git log

svn blame file
git blame file

svn cat url
git show rev:path/to/file

svn list url
git show rev:path/to/directory

svn log -rrev url
svn diff -crev url
git show rev

svn copy https://example.com/svn/trunk
https://example.com/svn/tags/name
git tag -a name

svn list https://example.com/svn/tags/
git tag -l

svn log —limit 1 https://example.com/svn/tags/tag
git show tag

svn copy https://example.com/svn/trunk https://example.com/svn/branches/branch
git branch branch

svn switch https://example.com/svn/branches/branch
git checkout branch

svn list https://example.com/svn/branches/
git branch

svn update -r rev
git checkout rev

svn update
git checkout prevbranch

svn merge -r rev:HEAD https://example.com/svn/branches/branch
git merge branch

svn merge -c rev url
git cherry-pick rev

svn checkout url
git clone url

svn switch url
 
git checkout —track
 -b branch origin/branch

svn update
git pull

Партицирование (partitioning) больших таблиц PostgreSQL

// Февраль 17, 2013 | 14806 просмотров | 4 комментария

Сегодня я хочу вам рассказать о партиционировании больших таблиц в моей любимой PostgreSQL.

Итак, начнём с определения:
Партиционирование (partitioning) — это разбиение больших таблиц на логические части по выбранным критериям. Партиционированные или секционированные таблицы призваны улучшить производительность и управляемость базами данных.

Вроде понятно. Теперь идём дальше. Как же разбить таблицу на партиции или секции?
В PostgreSQL эта процедура потребует небольших усилий, но результатом вы будете довольны 🙂
Читать далее…

Ubuntu. LibreOffice 4.0 в Ubuntu 12.10

// Февраль 8, 2013 | 1110 просмотров | комментариев (0)

Выпущен LibreOffice 4.0 с большим списком изменений.
Всё это можно посмотреть уже в Ubuntu 12.10, не дожидаясь следующей версии.
Для этого всего-лишь необходимо:

sudo apt-get purge libreoffice-core
sudo add-apt-repository ppa:libreoffice/libreoffice-prereleases
sudo apt-get update && sudo apt-get upgrade
sudo apt-get install libreoffice

Но обращаю ваше внимание, что в итоге вы получите только версию 4.0.0-alpha1.

За финальной версией пока нужно идти на сайт LibreOffice за deb-пакетом для x86 или для x86_64/amd64.

Внимание! Перед продолжением, удалите LibreOffice, если он у вас уже установлен.

sudo apt-get remove libreoffice

Скачиваете tar.gz-архив, содержащий deb-пакет.
Распаковываете его

tar -xzvf LibreOffice_4.0*

Переходите в папку DEBS:

cd LibreOffice_4.0*/DEBS/

И устанавливаете

sudo dpkg -i *.deb desktop-integration/*.deb

В итоге вы получите финальную версию LibreOffice 4.0.
Минус установки не через репозиторий в том, что вам самим придётся следить за обновлением пакетов, скачивать и переустанавливать его.

Ubuntu. Как удалить репозиторий, добавленный через add-apt-repository

// Февраль 5, 2013 | 5430 просмотров | комментариев (0)

Если вы добавили репозиторий через команду add-apt-repository и захотите его удалить, то вас ждёт разочарование, поскольку команды remove-apt-repository не существует.
Зато есть ключ --remove для команды add-apt-repository.
Т.е. мы можем удалить ненужный нам репозиторий так

add-apt-repository --remove ppa:repository-for-delete

или так

add-apt-repository -r ppa:repository-for-delete

Удачи.

Тюнинг Windows 7/8 на SSD (Solid-State Drive)

// Январь 31, 2013 | 3479 просмотров | комментариев (0)

SSD-диски с каждым годом становяться всё доступнее и всё больше в объёмах. Так и я стал владельцем SSD-диска Kingston SSDNow V+200 60GB 2.5″ SATAIII, «распилив» его пополам, я установил на него любимый Linux Xubuntu 12.10 и новенькую Windows 8 Pro.
О тюнинге последней я расскажу ниже.
А вот о тюнинге Linux Xubuntu на SSD довольно неплохо рассказано вот здесь. Читать далее…

PostgreSQL. Список всех таблиц

// Январь 31, 2013 | 2162 просмотров | комментариев (1)

Вывести список всех таблиц при помощи SQL довольно просто:

SELECT
        n.nspname               AS "schema",
        c.relname               AS "table"
FROM
        pg_catalog.pg_class AS c 
LEFT JOIN 
        pg_catalog.pg_namespace AS n 
        ON n.oid = c.relnamespace
WHERE
        n.nspname NOT IN ('pg_catalog', 'pg_toast')
        AND
        c.reltablespace > 0
        AND
        c.relkind = 'r'
ORDER BY
        c.relname ASC

В результате получим набор схема-таблица.

PHP. Достаём данные из Google Analytics через API используя Service Account

// Январь 22, 2013 | 11502 просмотров | 3 комментария

Сегодня я хотел бы поделиться знаниями по извлечении данных из Google Analytics, используя их API v3 на стороне сервера (server-side), т.е. без участия браузера пользователя.
Самое странное, что в Сети в основном описаны все примеры с использованием эмуляции браузера и аккаунта пользователя (пара email+пароль). Мы так делать не будем, т.к. это глупо и не красиво 🙂
Приступим.
Читать далее…