SlideShare a Scribd company logo
1 of 44
Download to read offline
PostgreSQL'iPostgreSQL'i
öğrenmek veöğrenmek ve
yönetmekyönetmek
Gülçin YıldırımGülçin Yıldırım
DevFest Women 2 Mart 2014DevFest Women 2 Mart 2014
Ben Kimim?Ben Kimim?
DBA @DBA @ MarkafoniMarkafoni
blogger @blogger @ kadinyazilimci.comkadinyazilimci.com
Sunum Ne Hakkında?Sunum Ne Hakkında?
Postgres'i nasıl öğrenebilirim?
Postgres'i nasıl anlayabilirim?
Hangi alışkanlıklar DBA'in hayatını kurtarır?
Hangi araçlar ve eklentiler bana yardımcı olur?
Hangi SQL komutlarını bilmem gerekir?
En çok kullanacağım psql komutları nelerdir?
psql'i nasıl verimli kullanabilirim?
Hangi konfigürasyon parametrelerini bilsem iyi olur?
Hangi Linux komutlarını önce öğrenmeliyim?
Sorgu optimizasyonu ne kadar önemli?
Postgres ÖğrenmekPostgres Öğrenmek
Postgres kaydolun. Günde 1 mail ile ne kadar
çok şey öğrenebileceğinize inanamazsınız.
mail listelerine
Liste Tanımı
PostgreSQL yönetimi
Kullanıcılar için genel bir tartışma
alanı
Postgres ve ona bağlı servis
duyuruları
Postgres performansına ilişkin
konular
pgsql-admin
pgsql-general
psql-announce
psql-
performance
Postgres ÖğrenmekPostgres Öğrenmek
blogunu takip edin.
( , , , , ,
, , , , )
Planet PostgreSQL
2ndQuadrant pgExperts VMware OmniTI EnterpriseDB
EndPoint credativ Cybertec CommandPrompt OpenSCG
Hubert 'depesz' Lubaczewski
Dimitri Fontaine
Michael Paquier
Craig Kerstiens
Francisco Figueiredo Jr
gabrielle roth
Josh Berkus
Christophe Pettus
Chris Travers
Craig Ringer
Postgres ÖğrenmekPostgres Öğrenmek
Karşılaştığınız her konsept için yazılmış
bulup okuyun.
Postgres belgeleme konusunda en zengin açık kaynak kodlu
projelerden biridir.
Çok sık kullandığınız özellikleri bile okuyun çünkü ufak bir
detay hayat kurtarıcı olabilir.
PostgreSQL
belgesini
"Why do I love Postgres?
- Because I'm not a DBA. "
Postgres Neden Güzel?Postgres Neden Güzel?
Kurulumu Çok KolayKurulumu Çok Kolay
Mac
basit ve 'native' bir Mac OS X uygulaması ve
yükleyiciye gerek duymuyor. Uygulamayı açtığınızda yeni
bağlantılara açık bir PostreSQL sunucu hazır oluyor.
Uygulamayı kapadığınızda sunucu kapanıyor.
Postgres.app
Linux
apt-get install postgresql-9.3
Windows
Window ile yüklemek için linki inceleyiniz.
pgAdminpgAdmin
Postgres'in grafik arayüzüdür. Sorgu analiz etme, çalışan
sorguları gözlemleme özellikleri mevcuttur. Kullandığınız
özelliklerin kodlarını görebilir, değiştirebilir ve
düzenleyebilirsiniz.
pgAdminpgAdmin
Postgres Çok GüzelPostgres Çok Güzel
Parçalı dizin (partial index) kullanımı
Create index index_1 on conference (presentation_id) where isactive = true;
Fonksiyonel dizin kullanımı
Create index index_2 on users to_lower(email);
Create index concurrently index_3 on users to_lower(email);
Şema (Schema)
Create schema womentechmakers;
Tablespace
Create tablespace women location '/data/women';
Postgres Çok GüzelPostgres Çok Güzel
Sorgu planlayıcısı harika!
Enum tipi
Boolean tipi
Hstore
Veri bölümleme
Replikasyon (Replication)
Window Functions
gin,gist
...
Farklar ile ÖğrenmeFarklar ile Öğrenme
User vs RoleUser vs Role
Create user devfest with password 'i<3postgres!';
Fark, 'user' olarak yarattığımızda 'login' özelliği olan bir 'role'
yaratıyor olmamız; 'role' yarattığımızda 'login' olabilmesi için
onu rolü yaratırken belirtmek gerekir.
Create role devfestw with password 'i<3linux!'
Create role devfestwomen with password 'i<3linux!' login;
gulcin=# du
List of roles
Role name | Attributes | Member of
-------------+------------------+--------------
devfest | | {}
devfestw | Cannot login | {}
devfestwomen | | {}
Nelere Bakmalıyım?Nelere Bakmalıyım?
Bu rolleri nasıl yetkilendirebilirim?
Hepsini topluca yetkilendirsem güzel olmaz mı?
gulcin=# Create role gdg;
CREATE ROLE
gulcin=# Grant gdg to devfest;
GRANT ROLE
gulcin=# Grant gdg to devfestw;
GRANT ROLE
gulcin=# Grant gdg to devfestwomen;
GRANT ROLE
gulcin=# du
List of roles
Role name | Attributes | Member of
-------------+------------------+--------------
devfest | | {gdg}
devfestw | Cannot login | {gdg}
devfestwomen | | {gdg}
gdg | Cannot login | {}
Nelere Bakmalıyım?Nelere Bakmalıyım?
Create role gdg option;
SUPERUSER NOSUPERUSER
CREATEDB NOCREATEDB
CREATEROLE KNOCREATEROLE
CREATEUSER NOCREATEUSER
INHERIT NOINHERIT
LOGIN NOLOGIN
REPLICATION NOREPLICATION
Nelere Bakmalıyım?Nelere Bakmalıyım?
Yetkilendirdim, nasıl geri alırım?
gulcin=# Alter role gdg superuser;
ALTER ROLE
gulcin=# du
List of roles
Role name | Attributes | Member of
-------------+-------------------------+------------
gdg | Superuser, Cannot login | {}
gulcin=# Alter role gdg nosuperuser;
ALTER ROLE
gulcin=# du
List of roles
Role name | Attributes | Member of
-------------+-------------------------+------------
gdg | Cannot login | {}
Nelere Bakmalıyım?Nelere Bakmalıyım?
Tabloları, sıralı dizileri, fonksiyonları, dizinleri nasıl
yetkilendirebilirim?
Verdiğim yetkileri nasıl geri alabilirim?
Grant select,update on table table_1 to gdg;
Grant insert on all tables in schema public to devfestwomen;
Grant usage on table_1_id_seq to devfestw;
Grant select on all sequences in schema google to devfest;
Revoke select,update on table table_1 from gdg;
Revoke insert on all tables in schema public from devfestwomen;
Revoke usage on table_1_id_seq from devfestw;
Revoke select on all tables in schema google from devfest;
Şema kullanımını da öğreneyim o zaman.
Explain vs Explain AnalyzeExplain vs Explain Analyze
gulcin=# explain select * from table_1;
QUERY PLAN
------------------------------------------------------------------
Seq Scan on table_1 (cost=0.00..4740.30 rows=86430 width=140)
(1 row)
gulcin=# explain analyze select * from table_1;
QUERY PLAN
-------------------------------------------------------------------
Seq Scan on table_1 (cost=0.00..4740.30 rows=86430 width=140)
(actual time=0.274..35.983 rows=86430 loops=1)
Total runtime: 40.492 ms
(2 rows)
Begin;
Explain analyze delete from table_1;
Rollback;
Explain (format JSON) select * from table_1;
Farklar ile ÖğrenmeFarklar ile Öğrenme
Konseptlerin ortak yönlerini, kullanım amaçlarını,
birbirlerinden ayrıldıkları noktaları bulmak detayı görmenize
yardım edecektir. Bu farkları bulmakla devam edebilirsiniz.
Constraint vs Index
Trigger vs Function
Index Scan vs Index-Only Scan
Vacuum vs Full Vacuum
pg_dump vs pg_basebackup
...
Postgres'i AnlamakPostgres'i Anlamak
"When elephants fight it is the grass that
suffers."
"Filler dövüşür çimenler ezilir."
Postgres'i AnlamakPostgres'i Anlamak
Uzun uzuuuun log incelemektir.
tail -f postgresql-Fri.log | perl -pe 's/.*ERROR.*/e[1;31m$&e[0m/g'
Postgres'i AnlamakPostgres'i Anlamak
Postgres eklentisi kurmak istedik. Belge bize ne önerdi?
Select * from pg_available_extensions;
Select * from pg_available_extension_versions;
gulcin=# Create extension pg_stat_statements;
CREATE EXTENSION
gulcin=# Select * from pg_stat_statements;
ERROR: pg_stat_statements must be loaded via shared_preload_libraries
gulcin=# Show config_file;
config_file
-----------------------------------------
/var/lib/pgsql/9.2/data/postgresql.conf
(1 row)
gulcin=# vim /var/lib/pgsql/9.2/data/postgresql.conf
#---------------------------------------
# RESOURCE USAGE (except WAL)
#---------------------------------------
# - Memory -
shared_preload_libraries ='pg_stat_statements'#(change requires restart)
Loglara bakarım, yetkilerini alırım. Kaldırırım.
Postgres'i AnlamakPostgres'i Anlamak
Diyelim ki bir tabloyu kaldırmak istedik...
gulcin=# select * from pg_stat_all_tables where relname = 'table_1';
-[ RECORD 1 ]-----+-------------------------------------------------
relid | 28193
schemaname | public
relname | table_1
seq_scan | 30686799 /* okuma ile ilgili parametreler */
seq_tup_read | 28979969846 /* okuma ile ilgili parametreler */
idx_scan | 2541503146 /* okuma ile ilgili parametreler */
idx_tup_fetch | 1119955873 /* okuma ile ilgili parametreler */
n_tup_ins | 129 /* kaç kayıt eklenmiş */
n_tup_upd | 123199 /* kaç kayıt güncellenmiş */
n_tup_del | 0 /* kaç kayıt silinmiş */
n_tup_hot_upd | 122323
n_live_tup | 1011
n_dead_tup | 58
last_vacuum | 2014-03-01 06:03:44.979917+02
last_autovacuum | 2014-03-01 17:08:39.960498+02
last_analyze | 2014-03-01 06:03:45.003016+02
last_autoanalyze | 2014-03-01 17:15:39.937703+02
vacuum_count | 184
autovacuum_count | 591
analyze_count | 185
autoanalyze_count | 754
gulcin=# select * from pg_stat_statements where query like '%table_1%';
(No rows)
Postgres'i AnlamakPostgres'i Anlamak
Konfigürasyon parametrelerini anlamaktır.
Loglara bakabilmek için log parametrelerini doğru ayarlamak
gerek.
Where, When, What to Log
#-------------------------------------------------
# ERROR REPORTING AND LOGGING
#-------------------------------------------------
# - Where to Log -
log_destination = 'stderr'
logging_collector = on
log_directory = 'pg_log'
log_filename = 'postgresql-%a.log'
log_truncate_on_rotation = on
log_rotation_age = 1d
log_rotation_size = 0
# - When to Log -
log_min_duration_statement = 500
Postgres'i AnlamakPostgres'i Anlamak
#----------------------------------------------
# RUNTIME STATISTICS
#-----------------------------------------------
# - Query/Index Statistics Collector -
track_activities = on
track_counts = on
track_functions = pl # none, pl, all
Konfigürasyon dosyasındaki bu parametreler sunucu
çapındaki koleksiyon özelliklerini kontrol eder. İstatistik
toplama açık ise, üretilen veri pg_stat ve pg_statio ailesindeki
(pg_stat_activity, pg_stat_database, pg_statio_all_indexes)
sistem tabloları tarafından erişilebilir.
Postgres'i AnlamakPostgres'i Anlamak
Kilitleri görmek ve yönetmektir.
SELECT pg_stat_activity.datname,
pg_class.relname,
pg_locks.mode,
pg_locks.granted,
pg_stat_activity.usename,
substr(pg_stat_activity.query,1,10),
pg_stat_activity.query_start,
age(now(),pg_stat_activity.query_start) AS "age",
pg_stat_activity.pid
FROM pg_stat_activity,
pg_locks
LEFT
OUTER JOIN pg_class ON (pg_locks.relation = pg_class.oid)
WHERE pg_locks.pid=pg_stat_activity.pid
AND MODE LIKE 'Exclusive%'
AND datname= 'warehouse'
ORDER BY query_start;
Select * from pg_stat_activity where pid = 0001
Select pg_terminate_backend(0001);
Postgres'i AnlamakPostgres'i Anlamak
, , , gibi yazılımlarla veri tabanı
sunucularımızı ve veri tabanlarımızı kontrol edebilirsiniz.
Nagios PRTG New Relic Cacti
Tavsiye: bir projesidir.check_postgres bucardo
check_postgres veri tabanımızın çeşitli özelliklerini izleyip
kontrol edebilmemize yarayan bir betiktir. Nagios gibi
yazılımlarla veya bağımsız betiklerle çalışabilecek şekilde
tasarlanmıştır.
Postgres'i AnlamakPostgres'i Anlamak
archive_ready autovac_freeze backends bloat
checkpoint cluster_id commitratio connection
custom_query database_size dbstats
disabled_triggers disk_space fsm_pages
fsm_relations hitratio hot_standby_delay
index_size table_size relation_size last_analyze
last_vacuum last_autoanalyze last_autovacuum
listener locks logfile pgbouncer_backends
pgbouncer_checksum pgagent_jobs prepared_txns
query_runtime query_time replicate_row
same_schema sequence settings_checksum
slony_status timesync txn_idle txn_time
version wal_files
NagiosNagios
Postgres'i AnlaPostgres'i Anlamakmak
Logları toplayıp analiz edersek çok daha iyi anlamış oluruz.
Bunun için aşağıdaki araçları kullanabilirsiniz.
pg_fouine
pgbadger
Log analiz etmek üzere tasarlanmış bu araçlar log incelemenizi
ve bunlardan yola çıkarak kararlar almanızı sağlayacaktır.
pgbadger ve pg_fouinepgbadger ve pg_fouine
Postgres'i AnlamakPostgres'i Anlamak
Onunla aynı dili konuşabilmektir.
SQL dili ile sorgulama yapabileceğimiz Postgres çeşitli
prosedürel dilleri de temel dağıtımında içermektedir.
, , vePL/pgSQL PL/Tcl PL/Perl PL/Python
Adı Dili
PL/Java Java
PL/PHP PHP
PL/R R
PL/Ruby Ruby
PL/sh Unix shell
Postgres ve DBA hayatıPostgres ve DBA hayatı
"PostgreSQL: making very hard things possible,
and simple things hard."
"PostgreSQL: çok zor şeyleri mümkün, çok basit
şeyleri zor kılar."
Postgres ve DBA HayatıPostgres ve DBA Hayatı
İşleri olabildiğince otomatize edin.
Bir yedekleme politikanız olsun.
Yedekleriniz güvenli ve kullanılabilir olsun.
Tablo ve dizin (index) boyutlarının artışını kontrol edin.
Uzun süren sorguları loglayın ve bu sorguları düzenli
aralıklarla iyileştirin.
Loglara düşen hataları inceleyin ve nasıl bir soruna işaret
ettiklerini anlamaya çalışın, araştırın.
Vacuum analyze, autovacuum, full vacuum işlerini planlayın.
Veri tabanı kilitleri hakkında fikir edinin ve nasıl izleyip
kontrol edeceğinizi bilin.
Postgres ve DBA HayatıPostgres ve DBA Hayatı
İşleri otomatize etmek için 'crontab' komutu çok faydalı
olacaktır. Yedekleme, vacuum yapma gibi rutinler her DBA'in
hayatını kurtaran faydalı alışkanlıklardır.
gulcin# crontab -l
00 02 * * * sh /home/postgres/scripts/getbackup.sh
0 05 * * * sh /home/postgres/scripts/daily_vacuum_analyze.sh
#WAL Archive CleanUp
0 02 * * * sh /var/lib/pgsql/removewal_archive.sh
crontab -e // crontab dosyasını düzenlemeye yarar.
# * * * * * çalıştırılacak komut
# ┬ ┬ ┬ ┬ ┬
# │ │ │ │ │
# │ │ │ │ │
# │ │ │ │ └───── haftanın günü (0 - 7) (0'dan 6'ya Pazar'dan Cumartesi'ye demektir; 7 P
# │ │ │ └────────── ay (1 - 12)
# │ │ └─────────────── ayın günü (1 - 31)
# │ └──────────────────── saat (0 - 23)
# └───────────────────────── dakika (0 - 59)
Cron için örnekCron için örnek
Ne kadar çok planlanmış iş o kadar çok kolaylık demektir.
exec &> /tmp/devfestwomen.log
echo -e "Script Started att`date`nn"
drop_database() # dbname
{
echo " "
echo "Restoring the database "$1""
echo " "
psql -U postgres -d postgres -c "ALTER DATABASE $1 CONNECTION LIMIT 0;"
psql -U postgres -d postgres -c "SELECT pg_terminate_backend(pid) FROM pg_stat_acti
psql -U postgres -d postgres -c "DROP DATABASE $1;"
}
create_database() # dbname,owner,dumpfile
{
psql -U postgres -d postgres -c "CREATE DATABASE $1 OWNER $2 TABLESPACE new_tablesp
psql -U postgres -d postgres -c "ALTER DATABASE $1 CONNECTION LIMIT 0;"
psql -U postgres -d postgres -c "COMMENT ON DATABASE $1 IS 'DB updated at `date`';
pg_restore -U postgres -j 4 -x -O --no-tablespaces -d $1 $3
}
open_database() # dbname
{
psql -U postgres -d $1 -c "ANALYZE;"
psql -U postgres -d postgres -c "ALTER DATABASE $1 CONNECTION LIMIT -1;"
}
Git kullanın!Git kullanın!
apt-get install git // Debian tabanlı dağıtım Ubuntu gibi.
yum install git // RHEL
yum install git-core // Fedora vs.
çok güzel. ile hemen öğren.Gitlab Demo
ssh-keygen -t rsa -C "yildirim.gulcin88@gmail.com"
cat ~/.ssh/id_rsa.pub
git config --global user.name "Gulcin Yildirim"
git config --global user.email "yildirim.gulcin88@gmail.com"
mkdir devfestwomen
cd devfestwomen
git init
touch README
git add README
git commit -m 'Welcome to DevFest Women 2014!'
git remote add origin git@demo.gitlab.com:gitlab/devfestwomen.git
git push -u origin master
Terminal ve psqlTerminal ve psql
Terminal ve psqlTerminal ve psql
psql Postgres'in etkileşimli (interaktif) terminalidir.
psql -h 127.0.0.1 -U gulcin -d database_1
Komutlar size çok hız kazandıracaktır.
l ve l+
c
dt ve dt+
di ve di+
d ve d+
du
dp
df
db
x
q
?
Linux KomutlarıLinux Komutları
psql ile çalışıyorsanız terminalde çalıştıracağınız komutlar ile
istediklerinizi daha hızlı yapabilirsiniz.
ls -la
ls -lh
pwd
locate
which
df -kh
free -g
htop/top/atop
ping
traceroute
mount
tail
less
vim
nano
cat
scp
rsync
cp
mv
rm -rf
mkdir
Teşekkürler.Teşekkürler.
Soru var mı?Soru var mı?
Gulcin Yildirim
+gülçinyıldırım
apatheticmagpie
@apatheticmagpie
Beni bul!Beni bul!

More Related Content

What's hot

Metasploit Framework - Giris Seviyesi Guvenlik Denetim Rehberi
Metasploit Framework - Giris Seviyesi Guvenlik Denetim RehberiMetasploit Framework - Giris Seviyesi Guvenlik Denetim Rehberi
Metasploit Framework - Giris Seviyesi Guvenlik Denetim RehberiFatih Ozavci
 
Beyaz Şapkalı Hacker Eğitimi Yardımcı Ders Notları
Beyaz Şapkalı Hacker Eğitimi Yardımcı Ders NotlarıBeyaz Şapkalı Hacker Eğitimi Yardımcı Ders Notları
Beyaz Şapkalı Hacker Eğitimi Yardımcı Ders NotlarıBGA Cyber Security
 
Sql, Sql Injection ve Sqlmap Kullanımı
Sql, Sql Injection ve Sqlmap KullanımıSql, Sql Injection ve Sqlmap Kullanımı
Sql, Sql Injection ve Sqlmap KullanımıBGA Cyber Security
 
PORT TARAMA ve KEŞİF ÇALIŞMALARI
PORT TARAMA ve KEŞİF ÇALIŞMALARI PORT TARAMA ve KEŞİF ÇALIŞMALARI
PORT TARAMA ve KEŞİF ÇALIŞMALARI BGA Cyber Security
 
Workshop Microservices - Microservices com Spring Cloud e Netflix OSS
Workshop Microservices - Microservices com Spring Cloud e Netflix OSSWorkshop Microservices - Microservices com Spring Cloud e Netflix OSS
Workshop Microservices - Microservices com Spring Cloud e Netflix OSSRodrigo Cândido da Silva
 
Zararlı Yazılım Analizi Eğitimi Lab Kitabı
Zararlı Yazılım Analizi Eğitimi Lab KitabıZararlı Yazılım Analizi Eğitimi Lab Kitabı
Zararlı Yazılım Analizi Eğitimi Lab KitabıBGA Cyber Security
 
엘라스틱서치 클러스터로 수십억 건의 데이터 운영하기
엘라스틱서치 클러스터로 수십억 건의 데이터 운영하기엘라스틱서치 클러스터로 수십억 건의 데이터 운영하기
엘라스틱서치 클러스터로 수십억 건의 데이터 운영하기흥래 김
 
Sızma Testi ve Güvenlik Uygulamaları El Kitabı - Furkan Enes Polatoğlu
Sızma Testi ve Güvenlik Uygulamaları El Kitabı - Furkan Enes PolatoğluSızma Testi ve Güvenlik Uygulamaları El Kitabı - Furkan Enes Polatoğlu
Sızma Testi ve Güvenlik Uygulamaları El Kitabı - Furkan Enes PolatoğluFurkan Enes Polatoglu
 
Bypass_AV-EDR.pdf
Bypass_AV-EDR.pdfBypass_AV-EDR.pdf
Bypass_AV-EDR.pdfFarouk2nd
 

What's hot (20)

Metasploit Framework - Giris Seviyesi Guvenlik Denetim Rehberi
Metasploit Framework - Giris Seviyesi Guvenlik Denetim RehberiMetasploit Framework - Giris Seviyesi Guvenlik Denetim Rehberi
Metasploit Framework - Giris Seviyesi Guvenlik Denetim Rehberi
 
Beyaz Şapkalı Hacker Eğitimi Yardımcı Ders Notları
Beyaz Şapkalı Hacker Eğitimi Yardımcı Ders NotlarıBeyaz Şapkalı Hacker Eğitimi Yardımcı Ders Notları
Beyaz Şapkalı Hacker Eğitimi Yardımcı Ders Notları
 
Sql, Sql Injection ve Sqlmap Kullanımı
Sql, Sql Injection ve Sqlmap KullanımıSql, Sql Injection ve Sqlmap Kullanımı
Sql, Sql Injection ve Sqlmap Kullanımı
 
BTRisk X86 Tersine Mühendislik Eğitim Sunumu - Bölüm-3
BTRisk X86 Tersine Mühendislik Eğitim Sunumu - Bölüm-3BTRisk X86 Tersine Mühendislik Eğitim Sunumu - Bölüm-3
BTRisk X86 Tersine Mühendislik Eğitim Sunumu - Bölüm-3
 
VERİTABANI SIZMA TESTLERİ
VERİTABANI SIZMA TESTLERİVERİTABANI SIZMA TESTLERİ
VERİTABANI SIZMA TESTLERİ
 
Linux 101
Linux 101Linux 101
Linux 101
 
BTRİSK Web Uygulama Güvenliği Denetimi Eğitim Sunumu
BTRİSK Web Uygulama Güvenliği Denetimi Eğitim SunumuBTRİSK Web Uygulama Güvenliği Denetimi Eğitim Sunumu
BTRİSK Web Uygulama Güvenliği Denetimi Eğitim Sunumu
 
BTRisk Zararlı Yazılım Analizi Eğitimi Sunumu - Bölüm 1
BTRisk Zararlı Yazılım Analizi Eğitimi Sunumu - Bölüm 1BTRisk Zararlı Yazılım Analizi Eğitimi Sunumu - Bölüm 1
BTRisk Zararlı Yazılım Analizi Eğitimi Sunumu - Bölüm 1
 
PAROLA KIRMA SALDIRILARI
PAROLA KIRMA SALDIRILARIPAROLA KIRMA SALDIRILARI
PAROLA KIRMA SALDIRILARI
 
Kesif ve Zafiyet Tarama
Kesif ve Zafiyet TaramaKesif ve Zafiyet Tarama
Kesif ve Zafiyet Tarama
 
PORT TARAMA ve KEŞİF ÇALIŞMALARI
PORT TARAMA ve KEŞİF ÇALIŞMALARI PORT TARAMA ve KEŞİF ÇALIŞMALARI
PORT TARAMA ve KEŞİF ÇALIŞMALARI
 
Kali linux
Kali linuxKali linux
Kali linux
 
Uygulamali Sizma Testi (Pentest) Egitimi Sunumu - 1
Uygulamali Sizma Testi (Pentest) Egitimi Sunumu - 1Uygulamali Sizma Testi (Pentest) Egitimi Sunumu - 1
Uygulamali Sizma Testi (Pentest) Egitimi Sunumu - 1
 
OWASP ZAP
OWASP ZAPOWASP ZAP
OWASP ZAP
 
Workshop Microservices - Microservices com Spring Cloud e Netflix OSS
Workshop Microservices - Microservices com Spring Cloud e Netflix OSSWorkshop Microservices - Microservices com Spring Cloud e Netflix OSS
Workshop Microservices - Microservices com Spring Cloud e Netflix OSS
 
Zararlı Yazılım Analizi Eğitimi Lab Kitabı
Zararlı Yazılım Analizi Eğitimi Lab KitabıZararlı Yazılım Analizi Eğitimi Lab Kitabı
Zararlı Yazılım Analizi Eğitimi Lab Kitabı
 
Web uygulama açıklıklarından faydalanarak sistem ele geçirme
Web uygulama açıklıklarından faydalanarak sistem ele geçirmeWeb uygulama açıklıklarından faydalanarak sistem ele geçirme
Web uygulama açıklıklarından faydalanarak sistem ele geçirme
 
엘라스틱서치 클러스터로 수십억 건의 데이터 운영하기
엘라스틱서치 클러스터로 수십억 건의 데이터 운영하기엘라스틱서치 클러스터로 수십억 건의 데이터 운영하기
엘라스틱서치 클러스터로 수십억 건의 데이터 운영하기
 
Sızma Testi ve Güvenlik Uygulamaları El Kitabı - Furkan Enes Polatoğlu
Sızma Testi ve Güvenlik Uygulamaları El Kitabı - Furkan Enes PolatoğluSızma Testi ve Güvenlik Uygulamaları El Kitabı - Furkan Enes Polatoğlu
Sızma Testi ve Güvenlik Uygulamaları El Kitabı - Furkan Enes Polatoğlu
 
Bypass_AV-EDR.pdf
Bypass_AV-EDR.pdfBypass_AV-EDR.pdf
Bypass_AV-EDR.pdf
 

Viewers also liked

PostgreSQL'e Genel Bakış
PostgreSQL'e Genel BakışPostgreSQL'e Genel Bakış
PostgreSQL'e Genel BakışNermin Canik
 
What's New In PostgreSQL 9.4
What's New In PostgreSQL 9.4What's New In PostgreSQL 9.4
What's New In PostgreSQL 9.4Pavan Deolasee
 
Managing PostgreSQL with Ansible - FOSDEM PGDay 2016
Managing PostgreSQL with Ansible - FOSDEM PGDay 2016Managing PostgreSQL with Ansible - FOSDEM PGDay 2016
Managing PostgreSQL with Ansible - FOSDEM PGDay 2016Gulcin Yildirim Jelinek
 
PGconf India 2017 - Closing Note
PGconf India 2017 - Closing NotePGconf India 2017 - Closing Note
PGconf India 2017 - Closing NotePavan Deolasee
 
LUG-BG - Kostadin Slavkov - PostgreSQL 10
LUG-BG - Kostadin Slavkov - PostgreSQL 10LUG-BG - Kostadin Slavkov - PostgreSQL 10
LUG-BG - Kostadin Slavkov - PostgreSQL 10Marian Marinov
 
10 things, an Oracle DBA should care about when moving to PostgreSQL
10 things, an Oracle DBA should care about when moving to PostgreSQL10 things, an Oracle DBA should care about when moving to PostgreSQL
10 things, an Oracle DBA should care about when moving to PostgreSQLPostgreSQL-Consulting
 
Entrepreneurship Reflective Learning Diary
Entrepreneurship Reflective Learning DiaryEntrepreneurship Reflective Learning Diary
Entrepreneurship Reflective Learning DiaryGulcin Yildirim Jelinek
 
Go Faster With Native Compilation
Go Faster With Native CompilationGo Faster With Native Compilation
Go Faster With Native CompilationPGConf APAC
 
(Ab)using 4d Indexing
(Ab)using 4d Indexing(Ab)using 4d Indexing
(Ab)using 4d IndexingPGConf APAC
 
Big Data and PostgreSQL
Big Data and PostgreSQLBig Data and PostgreSQL
Big Data and PostgreSQLPGConf APAC
 
PostgreSQL 10: What to Look For
PostgreSQL 10: What to Look ForPostgreSQL 10: What to Look For
PostgreSQL 10: What to Look ForAmit Langote
 
Introduction to Vacuum Freezing and XID
Introduction to Vacuum Freezing and XIDIntroduction to Vacuum Freezing and XID
Introduction to Vacuum Freezing and XIDPGConf APAC
 
PostgreSQL: Past present Future
PostgreSQL: Past present FuturePostgreSQL: Past present Future
PostgreSQL: Past present FuturePGConf APAC
 
PostgreSQL Enterprise Class Features and Capabilities
PostgreSQL Enterprise Class Features and CapabilitiesPostgreSQL Enterprise Class Features and Capabilities
PostgreSQL Enterprise Class Features and CapabilitiesPGConf APAC
 
Swapping Pacemaker Corosync with repmgr
Swapping Pacemaker Corosync with repmgrSwapping Pacemaker Corosync with repmgr
Swapping Pacemaker Corosync with repmgrPGConf APAC
 
Lightening Talk - PostgreSQL Worst Practices
Lightening Talk - PostgreSQL Worst PracticesLightening Talk - PostgreSQL Worst Practices
Lightening Talk - PostgreSQL Worst PracticesPGConf APAC
 

Viewers also liked (20)

TTÜ Geeky Weekly
TTÜ Geeky WeeklyTTÜ Geeky Weekly
TTÜ Geeky Weekly
 
Founding a LLC in Turkey
Founding a LLC in TurkeyFounding a LLC in Turkey
Founding a LLC in Turkey
 
PostgreSQL Hem Güçlü Hem Güzel!
PostgreSQL Hem Güçlü Hem Güzel!PostgreSQL Hem Güçlü Hem Güzel!
PostgreSQL Hem Güçlü Hem Güzel!
 
PostgreSQL'e Genel Bakış
PostgreSQL'e Genel BakışPostgreSQL'e Genel Bakış
PostgreSQL'e Genel Bakış
 
What's New In PostgreSQL 9.4
What's New In PostgreSQL 9.4What's New In PostgreSQL 9.4
What's New In PostgreSQL 9.4
 
Managing PostgreSQL with Ansible - FOSDEM PGDay 2016
Managing PostgreSQL with Ansible - FOSDEM PGDay 2016Managing PostgreSQL with Ansible - FOSDEM PGDay 2016
Managing PostgreSQL with Ansible - FOSDEM PGDay 2016
 
PGconf India 2017 - Closing Note
PGconf India 2017 - Closing NotePGconf India 2017 - Closing Note
PGconf India 2017 - Closing Note
 
LUG-BG - Kostadin Slavkov - PostgreSQL 10
LUG-BG - Kostadin Slavkov - PostgreSQL 10LUG-BG - Kostadin Slavkov - PostgreSQL 10
LUG-BG - Kostadin Slavkov - PostgreSQL 10
 
10 things, an Oracle DBA should care about when moving to PostgreSQL
10 things, an Oracle DBA should care about when moving to PostgreSQL10 things, an Oracle DBA should care about when moving to PostgreSQL
10 things, an Oracle DBA should care about when moving to PostgreSQL
 
Entrepreneurship Reflective Learning Diary
Entrepreneurship Reflective Learning DiaryEntrepreneurship Reflective Learning Diary
Entrepreneurship Reflective Learning Diary
 
Go Faster With Native Compilation
Go Faster With Native CompilationGo Faster With Native Compilation
Go Faster With Native Compilation
 
(Ab)using 4d Indexing
(Ab)using 4d Indexing(Ab)using 4d Indexing
(Ab)using 4d Indexing
 
pgDay Asia 2016 & 2017
pgDay Asia 2016 & 2017pgDay Asia 2016 & 2017
pgDay Asia 2016 & 2017
 
Big Data and PostgreSQL
Big Data and PostgreSQLBig Data and PostgreSQL
Big Data and PostgreSQL
 
PostgreSQL 10: What to Look For
PostgreSQL 10: What to Look ForPostgreSQL 10: What to Look For
PostgreSQL 10: What to Look For
 
Introduction to Vacuum Freezing and XID
Introduction to Vacuum Freezing and XIDIntroduction to Vacuum Freezing and XID
Introduction to Vacuum Freezing and XID
 
PostgreSQL: Past present Future
PostgreSQL: Past present FuturePostgreSQL: Past present Future
PostgreSQL: Past present Future
 
PostgreSQL Enterprise Class Features and Capabilities
PostgreSQL Enterprise Class Features and CapabilitiesPostgreSQL Enterprise Class Features and Capabilities
PostgreSQL Enterprise Class Features and Capabilities
 
Swapping Pacemaker Corosync with repmgr
Swapping Pacemaker Corosync with repmgrSwapping Pacemaker Corosync with repmgr
Swapping Pacemaker Corosync with repmgr
 
Lightening Talk - PostgreSQL Worst Practices
Lightening Talk - PostgreSQL Worst PracticesLightening Talk - PostgreSQL Worst Practices
Lightening Talk - PostgreSQL Worst Practices
 

Similar to PostgreSQL'i öğrenmek ve yönetmek

Performance Tuni̇ng
Performance Tuni̇ngPerformance Tuni̇ng
Performance Tuni̇ngAnar Godjaev
 
İleri Seviye T-SQL Programlama - Chapter 11
İleri Seviye T-SQL Programlama - Chapter 11İleri Seviye T-SQL Programlama - Chapter 11
İleri Seviye T-SQL Programlama - Chapter 11Cihan Özhan
 
DBA ve Geliştiriciler İçin Başarımı Artırıcı Öneriler - PostgreSQL Konferansı...
DBA ve Geliştiriciler İçin Başarımı Artırıcı Öneriler - PostgreSQL Konferansı...DBA ve Geliştiriciler İçin Başarımı Artırıcı Öneriler - PostgreSQL Konferansı...
DBA ve Geliştiriciler İçin Başarımı Artırıcı Öneriler - PostgreSQL Konferansı...atifceylan
 
Stored procedure
Stored procedureStored procedure
Stored procedureoktaygokgol
 
Hackerspace PostgreSQL Atolyesi - 1
Hackerspace PostgreSQL Atolyesi - 1Hackerspace PostgreSQL Atolyesi - 1
Hackerspace PostgreSQL Atolyesi - 1Erkin Çakar
 
Hackerspace PostgreSQL Atolyesi 2
Hackerspace PostgreSQL Atolyesi 2Hackerspace PostgreSQL Atolyesi 2
Hackerspace PostgreSQL Atolyesi 2Erkin Çakar
 
Struts 2 Ile Tanisma
Struts 2 Ile TanismaStruts 2 Ile Tanisma
Struts 2 Ile Tanismaokanozeren
 
Oracle veritabani performans kontrol listesi
Oracle veritabani performans kontrol listesiOracle veritabani performans kontrol listesi
Oracle veritabani performans kontrol listesiOrhan ERIPEK
 
Sql egitimi-gaziantep
Sql egitimi-gaziantepSql egitimi-gaziantep
Sql egitimi-gaziantepsersld61
 
Sql en-iyi-kursu
Sql en-iyi-kursuSql en-iyi-kursu
Sql en-iyi-kursusersld61
 
Sql en-iyi-egitimi
Sql en-iyi-egitimiSql en-iyi-egitimi
Sql en-iyi-egitimisersld61
 
9.hafta cüneyt tomruk
9.hafta cüneyt tomruk9.hafta cüneyt tomruk
9.hafta cüneyt tomrukoktaygokgol
 
Sql egitimi-kagithane
Sql egitimi-kagithaneSql egitimi-kagithane
Sql egitimi-kagithanesersld61
 
Sql egitimi-ankara
Sql egitimi-ankaraSql egitimi-ankara
Sql egitimi-ankarasersld61
 
Nmap sonuclarinin yorumlanmasi
Nmap sonuclarinin yorumlanmasiNmap sonuclarinin yorumlanmasi
Nmap sonuclarinin yorumlanmasicigalkan
 
Sql egitimi-gungoren
Sql egitimi-gungorenSql egitimi-gungoren
Sql egitimi-gungorensersld61
 
Pig ve Hive ile Hadoop üzerinde Veri Analizi
Pig ve Hive ile Hadoop üzerinde Veri AnaliziPig ve Hive ile Hadoop üzerinde Veri Analizi
Pig ve Hive ile Hadoop üzerinde Veri AnaliziHakan Ilter
 
Sql egitimi-gaziosmanpasa
Sql egitimi-gaziosmanpasaSql egitimi-gaziosmanpasa
Sql egitimi-gaziosmanpasasersld61
 

Similar to PostgreSQL'i öğrenmek ve yönetmek (20)

Performance Tuni̇ng
Performance Tuni̇ngPerformance Tuni̇ng
Performance Tuni̇ng
 
İleri Seviye T-SQL Programlama - Chapter 11
İleri Seviye T-SQL Programlama - Chapter 11İleri Seviye T-SQL Programlama - Chapter 11
İleri Seviye T-SQL Programlama - Chapter 11
 
DBA ve Geliştiriciler İçin Başarımı Artırıcı Öneriler - PostgreSQL Konferansı...
DBA ve Geliştiriciler İçin Başarımı Artırıcı Öneriler - PostgreSQL Konferansı...DBA ve Geliştiriciler İçin Başarımı Artırıcı Öneriler - PostgreSQL Konferansı...
DBA ve Geliştiriciler İçin Başarımı Artırıcı Öneriler - PostgreSQL Konferansı...
 
Stored procedure
Stored procedureStored procedure
Stored procedure
 
Hackerspace PostgreSQL Atolyesi - 1
Hackerspace PostgreSQL Atolyesi - 1Hackerspace PostgreSQL Atolyesi - 1
Hackerspace PostgreSQL Atolyesi - 1
 
Hackerspace PostgreSQL Atolyesi 2
Hackerspace PostgreSQL Atolyesi 2Hackerspace PostgreSQL Atolyesi 2
Hackerspace PostgreSQL Atolyesi 2
 
Struts 2 Ile Tanisma
Struts 2 Ile TanismaStruts 2 Ile Tanisma
Struts 2 Ile Tanisma
 
Caffe kılavuzu
Caffe kılavuzuCaffe kılavuzu
Caffe kılavuzu
 
Oracle veritabani performans kontrol listesi
Oracle veritabani performans kontrol listesiOracle veritabani performans kontrol listesi
Oracle veritabani performans kontrol listesi
 
Sql egitimi-gaziantep
Sql egitimi-gaziantepSql egitimi-gaziantep
Sql egitimi-gaziantep
 
Sql en-iyi-kursu
Sql en-iyi-kursuSql en-iyi-kursu
Sql en-iyi-kursu
 
Sql en-iyi-egitimi
Sql en-iyi-egitimiSql en-iyi-egitimi
Sql en-iyi-egitimi
 
9.hafta cüneyt tomruk
9.hafta cüneyt tomruk9.hafta cüneyt tomruk
9.hafta cüneyt tomruk
 
Sql egitimi-kagithane
Sql egitimi-kagithaneSql egitimi-kagithane
Sql egitimi-kagithane
 
Sql egitimi-ankara
Sql egitimi-ankaraSql egitimi-ankara
Sql egitimi-ankara
 
Exadata Performance Notes
Exadata Performance NotesExadata Performance Notes
Exadata Performance Notes
 
Nmap sonuclarinin yorumlanmasi
Nmap sonuclarinin yorumlanmasiNmap sonuclarinin yorumlanmasi
Nmap sonuclarinin yorumlanmasi
 
Sql egitimi-gungoren
Sql egitimi-gungorenSql egitimi-gungoren
Sql egitimi-gungoren
 
Pig ve Hive ile Hadoop üzerinde Veri Analizi
Pig ve Hive ile Hadoop üzerinde Veri AnaliziPig ve Hive ile Hadoop üzerinde Veri Analizi
Pig ve Hive ile Hadoop üzerinde Veri Analizi
 
Sql egitimi-gaziosmanpasa
Sql egitimi-gaziosmanpasaSql egitimi-gaziosmanpasa
Sql egitimi-gaziosmanpasa
 

PostgreSQL'i öğrenmek ve yönetmek

  • 1. PostgreSQL'iPostgreSQL'i öğrenmek veöğrenmek ve yönetmekyönetmek Gülçin YıldırımGülçin Yıldırım DevFest Women 2 Mart 2014DevFest Women 2 Mart 2014
  • 2. Ben Kimim?Ben Kimim? DBA @DBA @ MarkafoniMarkafoni blogger @blogger @ kadinyazilimci.comkadinyazilimci.com
  • 3. Sunum Ne Hakkında?Sunum Ne Hakkında? Postgres'i nasıl öğrenebilirim? Postgres'i nasıl anlayabilirim? Hangi alışkanlıklar DBA'in hayatını kurtarır? Hangi araçlar ve eklentiler bana yardımcı olur? Hangi SQL komutlarını bilmem gerekir? En çok kullanacağım psql komutları nelerdir? psql'i nasıl verimli kullanabilirim? Hangi konfigürasyon parametrelerini bilsem iyi olur? Hangi Linux komutlarını önce öğrenmeliyim? Sorgu optimizasyonu ne kadar önemli?
  • 4. Postgres ÖğrenmekPostgres Öğrenmek Postgres kaydolun. Günde 1 mail ile ne kadar çok şey öğrenebileceğinize inanamazsınız. mail listelerine Liste Tanımı PostgreSQL yönetimi Kullanıcılar için genel bir tartışma alanı Postgres ve ona bağlı servis duyuruları Postgres performansına ilişkin konular pgsql-admin pgsql-general psql-announce psql- performance
  • 5. Postgres ÖğrenmekPostgres Öğrenmek blogunu takip edin. ( , , , , , , , , , ) Planet PostgreSQL 2ndQuadrant pgExperts VMware OmniTI EnterpriseDB EndPoint credativ Cybertec CommandPrompt OpenSCG Hubert 'depesz' Lubaczewski Dimitri Fontaine Michael Paquier Craig Kerstiens Francisco Figueiredo Jr gabrielle roth Josh Berkus Christophe Pettus Chris Travers Craig Ringer
  • 6.
  • 7. Postgres ÖğrenmekPostgres Öğrenmek Karşılaştığınız her konsept için yazılmış bulup okuyun. Postgres belgeleme konusunda en zengin açık kaynak kodlu projelerden biridir. Çok sık kullandığınız özellikleri bile okuyun çünkü ufak bir detay hayat kurtarıcı olabilir. PostgreSQL belgesini "Why do I love Postgres? - Because I'm not a DBA. "
  • 9. Kurulumu Çok KolayKurulumu Çok Kolay Mac basit ve 'native' bir Mac OS X uygulaması ve yükleyiciye gerek duymuyor. Uygulamayı açtığınızda yeni bağlantılara açık bir PostreSQL sunucu hazır oluyor. Uygulamayı kapadığınızda sunucu kapanıyor. Postgres.app Linux apt-get install postgresql-9.3 Windows Window ile yüklemek için linki inceleyiniz.
  • 10. pgAdminpgAdmin Postgres'in grafik arayüzüdür. Sorgu analiz etme, çalışan sorguları gözlemleme özellikleri mevcuttur. Kullandığınız özelliklerin kodlarını görebilir, değiştirebilir ve düzenleyebilirsiniz.
  • 12. Postgres Çok GüzelPostgres Çok Güzel Parçalı dizin (partial index) kullanımı Create index index_1 on conference (presentation_id) where isactive = true; Fonksiyonel dizin kullanımı Create index index_2 on users to_lower(email); Create index concurrently index_3 on users to_lower(email); Şema (Schema) Create schema womentechmakers; Tablespace Create tablespace women location '/data/women';
  • 13. Postgres Çok GüzelPostgres Çok Güzel Sorgu planlayıcısı harika! Enum tipi Boolean tipi Hstore Veri bölümleme Replikasyon (Replication) Window Functions gin,gist ...
  • 15. User vs RoleUser vs Role Create user devfest with password 'i<3postgres!'; Fark, 'user' olarak yarattığımızda 'login' özelliği olan bir 'role' yaratıyor olmamız; 'role' yarattığımızda 'login' olabilmesi için onu rolü yaratırken belirtmek gerekir. Create role devfestw with password 'i<3linux!' Create role devfestwomen with password 'i<3linux!' login; gulcin=# du List of roles Role name | Attributes | Member of -------------+------------------+-------------- devfest | | {} devfestw | Cannot login | {} devfestwomen | | {}
  • 16. Nelere Bakmalıyım?Nelere Bakmalıyım? Bu rolleri nasıl yetkilendirebilirim? Hepsini topluca yetkilendirsem güzel olmaz mı? gulcin=# Create role gdg; CREATE ROLE gulcin=# Grant gdg to devfest; GRANT ROLE gulcin=# Grant gdg to devfestw; GRANT ROLE gulcin=# Grant gdg to devfestwomen; GRANT ROLE gulcin=# du List of roles Role name | Attributes | Member of -------------+------------------+-------------- devfest | | {gdg} devfestw | Cannot login | {gdg} devfestwomen | | {gdg} gdg | Cannot login | {}
  • 17. Nelere Bakmalıyım?Nelere Bakmalıyım? Create role gdg option; SUPERUSER NOSUPERUSER CREATEDB NOCREATEDB CREATEROLE KNOCREATEROLE CREATEUSER NOCREATEUSER INHERIT NOINHERIT LOGIN NOLOGIN REPLICATION NOREPLICATION
  • 18. Nelere Bakmalıyım?Nelere Bakmalıyım? Yetkilendirdim, nasıl geri alırım? gulcin=# Alter role gdg superuser; ALTER ROLE gulcin=# du List of roles Role name | Attributes | Member of -------------+-------------------------+------------ gdg | Superuser, Cannot login | {} gulcin=# Alter role gdg nosuperuser; ALTER ROLE gulcin=# du List of roles Role name | Attributes | Member of -------------+-------------------------+------------ gdg | Cannot login | {}
  • 19. Nelere Bakmalıyım?Nelere Bakmalıyım? Tabloları, sıralı dizileri, fonksiyonları, dizinleri nasıl yetkilendirebilirim? Verdiğim yetkileri nasıl geri alabilirim? Grant select,update on table table_1 to gdg; Grant insert on all tables in schema public to devfestwomen; Grant usage on table_1_id_seq to devfestw; Grant select on all sequences in schema google to devfest; Revoke select,update on table table_1 from gdg; Revoke insert on all tables in schema public from devfestwomen; Revoke usage on table_1_id_seq from devfestw; Revoke select on all tables in schema google from devfest; Şema kullanımını da öğreneyim o zaman.
  • 20. Explain vs Explain AnalyzeExplain vs Explain Analyze gulcin=# explain select * from table_1; QUERY PLAN ------------------------------------------------------------------ Seq Scan on table_1 (cost=0.00..4740.30 rows=86430 width=140) (1 row) gulcin=# explain analyze select * from table_1; QUERY PLAN ------------------------------------------------------------------- Seq Scan on table_1 (cost=0.00..4740.30 rows=86430 width=140) (actual time=0.274..35.983 rows=86430 loops=1) Total runtime: 40.492 ms (2 rows) Begin; Explain analyze delete from table_1; Rollback; Explain (format JSON) select * from table_1;
  • 21. Farklar ile ÖğrenmeFarklar ile Öğrenme Konseptlerin ortak yönlerini, kullanım amaçlarını, birbirlerinden ayrıldıkları noktaları bulmak detayı görmenize yardım edecektir. Bu farkları bulmakla devam edebilirsiniz. Constraint vs Index Trigger vs Function Index Scan vs Index-Only Scan Vacuum vs Full Vacuum pg_dump vs pg_basebackup ...
  • 22. Postgres'i AnlamakPostgres'i Anlamak "When elephants fight it is the grass that suffers." "Filler dövüşür çimenler ezilir."
  • 23. Postgres'i AnlamakPostgres'i Anlamak Uzun uzuuuun log incelemektir. tail -f postgresql-Fri.log | perl -pe 's/.*ERROR.*/e[1;31m$&e[0m/g'
  • 24. Postgres'i AnlamakPostgres'i Anlamak Postgres eklentisi kurmak istedik. Belge bize ne önerdi? Select * from pg_available_extensions; Select * from pg_available_extension_versions; gulcin=# Create extension pg_stat_statements; CREATE EXTENSION gulcin=# Select * from pg_stat_statements; ERROR: pg_stat_statements must be loaded via shared_preload_libraries gulcin=# Show config_file; config_file ----------------------------------------- /var/lib/pgsql/9.2/data/postgresql.conf (1 row) gulcin=# vim /var/lib/pgsql/9.2/data/postgresql.conf #--------------------------------------- # RESOURCE USAGE (except WAL) #--------------------------------------- # - Memory - shared_preload_libraries ='pg_stat_statements'#(change requires restart)
  • 25. Loglara bakarım, yetkilerini alırım. Kaldırırım. Postgres'i AnlamakPostgres'i Anlamak Diyelim ki bir tabloyu kaldırmak istedik... gulcin=# select * from pg_stat_all_tables where relname = 'table_1'; -[ RECORD 1 ]-----+------------------------------------------------- relid | 28193 schemaname | public relname | table_1 seq_scan | 30686799 /* okuma ile ilgili parametreler */ seq_tup_read | 28979969846 /* okuma ile ilgili parametreler */ idx_scan | 2541503146 /* okuma ile ilgili parametreler */ idx_tup_fetch | 1119955873 /* okuma ile ilgili parametreler */ n_tup_ins | 129 /* kaç kayıt eklenmiş */ n_tup_upd | 123199 /* kaç kayıt güncellenmiş */ n_tup_del | 0 /* kaç kayıt silinmiş */ n_tup_hot_upd | 122323 n_live_tup | 1011 n_dead_tup | 58 last_vacuum | 2014-03-01 06:03:44.979917+02 last_autovacuum | 2014-03-01 17:08:39.960498+02 last_analyze | 2014-03-01 06:03:45.003016+02 last_autoanalyze | 2014-03-01 17:15:39.937703+02 vacuum_count | 184 autovacuum_count | 591 analyze_count | 185 autoanalyze_count | 754 gulcin=# select * from pg_stat_statements where query like '%table_1%'; (No rows)
  • 26. Postgres'i AnlamakPostgres'i Anlamak Konfigürasyon parametrelerini anlamaktır. Loglara bakabilmek için log parametrelerini doğru ayarlamak gerek. Where, When, What to Log #------------------------------------------------- # ERROR REPORTING AND LOGGING #------------------------------------------------- # - Where to Log - log_destination = 'stderr' logging_collector = on log_directory = 'pg_log' log_filename = 'postgresql-%a.log' log_truncate_on_rotation = on log_rotation_age = 1d log_rotation_size = 0 # - When to Log - log_min_duration_statement = 500
  • 27. Postgres'i AnlamakPostgres'i Anlamak #---------------------------------------------- # RUNTIME STATISTICS #----------------------------------------------- # - Query/Index Statistics Collector - track_activities = on track_counts = on track_functions = pl # none, pl, all Konfigürasyon dosyasındaki bu parametreler sunucu çapındaki koleksiyon özelliklerini kontrol eder. İstatistik toplama açık ise, üretilen veri pg_stat ve pg_statio ailesindeki (pg_stat_activity, pg_stat_database, pg_statio_all_indexes) sistem tabloları tarafından erişilebilir.
  • 28. Postgres'i AnlamakPostgres'i Anlamak Kilitleri görmek ve yönetmektir. SELECT pg_stat_activity.datname, pg_class.relname, pg_locks.mode, pg_locks.granted, pg_stat_activity.usename, substr(pg_stat_activity.query,1,10), pg_stat_activity.query_start, age(now(),pg_stat_activity.query_start) AS "age", pg_stat_activity.pid FROM pg_stat_activity, pg_locks LEFT OUTER JOIN pg_class ON (pg_locks.relation = pg_class.oid) WHERE pg_locks.pid=pg_stat_activity.pid AND MODE LIKE 'Exclusive%' AND datname= 'warehouse' ORDER BY query_start; Select * from pg_stat_activity where pid = 0001 Select pg_terminate_backend(0001);
  • 29. Postgres'i AnlamakPostgres'i Anlamak , , , gibi yazılımlarla veri tabanı sunucularımızı ve veri tabanlarımızı kontrol edebilirsiniz. Nagios PRTG New Relic Cacti Tavsiye: bir projesidir.check_postgres bucardo check_postgres veri tabanımızın çeşitli özelliklerini izleyip kontrol edebilmemize yarayan bir betiktir. Nagios gibi yazılımlarla veya bağımsız betiklerle çalışabilecek şekilde tasarlanmıştır.
  • 30. Postgres'i AnlamakPostgres'i Anlamak archive_ready autovac_freeze backends bloat checkpoint cluster_id commitratio connection custom_query database_size dbstats disabled_triggers disk_space fsm_pages fsm_relations hitratio hot_standby_delay index_size table_size relation_size last_analyze last_vacuum last_autoanalyze last_autovacuum listener locks logfile pgbouncer_backends pgbouncer_checksum pgagent_jobs prepared_txns query_runtime query_time replicate_row same_schema sequence settings_checksum slony_status timesync txn_idle txn_time version wal_files
  • 32. Postgres'i AnlaPostgres'i Anlamakmak Logları toplayıp analiz edersek çok daha iyi anlamış oluruz. Bunun için aşağıdaki araçları kullanabilirsiniz. pg_fouine pgbadger Log analiz etmek üzere tasarlanmış bu araçlar log incelemenizi ve bunlardan yola çıkarak kararlar almanızı sağlayacaktır.
  • 34. Postgres'i AnlamakPostgres'i Anlamak Onunla aynı dili konuşabilmektir. SQL dili ile sorgulama yapabileceğimiz Postgres çeşitli prosedürel dilleri de temel dağıtımında içermektedir. , , vePL/pgSQL PL/Tcl PL/Perl PL/Python Adı Dili PL/Java Java PL/PHP PHP PL/R R PL/Ruby Ruby PL/sh Unix shell
  • 35. Postgres ve DBA hayatıPostgres ve DBA hayatı "PostgreSQL: making very hard things possible, and simple things hard." "PostgreSQL: çok zor şeyleri mümkün, çok basit şeyleri zor kılar."
  • 36. Postgres ve DBA HayatıPostgres ve DBA Hayatı İşleri olabildiğince otomatize edin. Bir yedekleme politikanız olsun. Yedekleriniz güvenli ve kullanılabilir olsun. Tablo ve dizin (index) boyutlarının artışını kontrol edin. Uzun süren sorguları loglayın ve bu sorguları düzenli aralıklarla iyileştirin. Loglara düşen hataları inceleyin ve nasıl bir soruna işaret ettiklerini anlamaya çalışın, araştırın. Vacuum analyze, autovacuum, full vacuum işlerini planlayın. Veri tabanı kilitleri hakkında fikir edinin ve nasıl izleyip kontrol edeceğinizi bilin.
  • 37. Postgres ve DBA HayatıPostgres ve DBA Hayatı İşleri otomatize etmek için 'crontab' komutu çok faydalı olacaktır. Yedekleme, vacuum yapma gibi rutinler her DBA'in hayatını kurtaran faydalı alışkanlıklardır. gulcin# crontab -l 00 02 * * * sh /home/postgres/scripts/getbackup.sh 0 05 * * * sh /home/postgres/scripts/daily_vacuum_analyze.sh #WAL Archive CleanUp 0 02 * * * sh /var/lib/pgsql/removewal_archive.sh crontab -e // crontab dosyasını düzenlemeye yarar. # * * * * * çalıştırılacak komut # ┬ ┬ ┬ ┬ ┬ # │ │ │ │ │ # │ │ │ │ │ # │ │ │ │ └───── haftanın günü (0 - 7) (0'dan 6'ya Pazar'dan Cumartesi'ye demektir; 7 P # │ │ │ └────────── ay (1 - 12) # │ │ └─────────────── ayın günü (1 - 31) # │ └──────────────────── saat (0 - 23) # └───────────────────────── dakika (0 - 59)
  • 38. Cron için örnekCron için örnek Ne kadar çok planlanmış iş o kadar çok kolaylık demektir. exec &> /tmp/devfestwomen.log echo -e "Script Started att`date`nn" drop_database() # dbname { echo " " echo "Restoring the database "$1"" echo " " psql -U postgres -d postgres -c "ALTER DATABASE $1 CONNECTION LIMIT 0;" psql -U postgres -d postgres -c "SELECT pg_terminate_backend(pid) FROM pg_stat_acti psql -U postgres -d postgres -c "DROP DATABASE $1;" } create_database() # dbname,owner,dumpfile { psql -U postgres -d postgres -c "CREATE DATABASE $1 OWNER $2 TABLESPACE new_tablesp psql -U postgres -d postgres -c "ALTER DATABASE $1 CONNECTION LIMIT 0;" psql -U postgres -d postgres -c "COMMENT ON DATABASE $1 IS 'DB updated at `date`'; pg_restore -U postgres -j 4 -x -O --no-tablespaces -d $1 $3 } open_database() # dbname { psql -U postgres -d $1 -c "ANALYZE;" psql -U postgres -d postgres -c "ALTER DATABASE $1 CONNECTION LIMIT -1;" }
  • 39. Git kullanın!Git kullanın! apt-get install git // Debian tabanlı dağıtım Ubuntu gibi. yum install git // RHEL yum install git-core // Fedora vs. çok güzel. ile hemen öğren.Gitlab Demo ssh-keygen -t rsa -C "yildirim.gulcin88@gmail.com" cat ~/.ssh/id_rsa.pub git config --global user.name "Gulcin Yildirim" git config --global user.email "yildirim.gulcin88@gmail.com" mkdir devfestwomen cd devfestwomen git init touch README git add README git commit -m 'Welcome to DevFest Women 2014!' git remote add origin git@demo.gitlab.com:gitlab/devfestwomen.git git push -u origin master
  • 41. Terminal ve psqlTerminal ve psql psql Postgres'in etkileşimli (interaktif) terminalidir. psql -h 127.0.0.1 -U gulcin -d database_1 Komutlar size çok hız kazandıracaktır. l ve l+ c dt ve dt+ di ve di+ d ve d+ du dp df db x q ?
  • 42. Linux KomutlarıLinux Komutları psql ile çalışıyorsanız terminalde çalıştıracağınız komutlar ile istediklerinizi daha hızlı yapabilirsiniz. ls -la ls -lh pwd locate which df -kh free -g htop/top/atop ping traceroute mount tail less vim nano cat scp rsync cp mv rm -rf mkdir