चूंकि पोस्टग्रेज MySQL की तुलना में बहुत अधिक समझदार है, इसलिए रिपोर्ट करने के लिए कई "ट्रिक्स" नहीं हैं;-)
मैनुअल में कुछ अच्छी प्रदर्शन युक्तियाँ हैं।
कुछ अन्य प्रदर्शन संबंधी बातें ध्यान में रखें:
- सुनिश्चित करें कि ऑटोवैक्यूम चालू है
- सुनिश्चित करें कि आप अपने postgres.conf (प्रभावी कैश आकार, साझा बफ़र्स, वर्क मेम ... ट्यून करने के लिए बहुत सारे विकल्प) पढ़ चुके हैं।
- अपने "वास्तविक" डेटाबेस कनेक्शन को न्यूनतम रखने के लिए pgpool या pgbouncer का उपयोग करें
- जानें कि व्याख्या और व्याख्या विश्लेषण कैसे काम करता है। आउटपुट पढ़ना सीखें।
- क्लस्टर डिस्क पर डेटा को इंडेक्स के अनुसार सॉर्ट करता है। बड़ी (ज्यादातर) केवल-पढ़ने के लिए तालिकाओं के प्रदर्शन में नाटकीय रूप से सुधार कर सकता है। क्लस्टरिंग एक बार का ऑपरेशन है:जब तालिका को बाद में अपडेट किया जाता है, तो परिवर्तन क्लस्टर नहीं होते हैं।
यहां कुछ चीजें दी गई हैं जो मुझे उपयोगी लगी हैं जो कि कॉन्फ़िगरेशन या प्रदर्शन से संबंधित नहीं हैं।
यह देखने के लिए कि वर्तमान में क्या हो रहा है:
select * from pg_stat_activity;
विविध प्रकार्य खोजें:
select * from pg_proc WHERE proname ~* '^pg_.*'
डेटाबेस का आकार खोजें:
select pg_database_size('postgres');
select pg_size_pretty(pg_database_size('postgres'));
सभी डेटाबेस का आकार खोजें:
select datname, pg_size_pretty(pg_database_size(datname)) as size
from pg_database;
टेबल और इंडेक्स का आकार ढूंढें:
select pg_size_pretty(pg_relation_size('public.customer'));
या, सभी तालिकाओं और अनुक्रमितों को सूचीबद्ध करने के लिए (शायद इसे देखना आसान है):
select schemaname, relname,
pg_size_pretty(pg_relation_size(schemaname || '.' || relname)) as size
from (select schemaname, relname, 'table' as type
from pg_stat_user_tables
union all
select schemaname, relname, 'index' as type
from pg_stat_user_indexes) x;
ओह, और आप लेन-देन को नेस्ट कर सकते हैं, आंशिक लेन-देन को रोलबैक कर सकते हैं++
test=# begin;
BEGIN
test=# select count(*) from customer where name='test';
count
-------
0
(1 row)
test=# insert into customer (name) values ('test');
INSERT 0 1
test=# savepoint foo;
SAVEPOINT
test=# update customer set name='john';
UPDATE 3
test=# rollback to savepoint foo;
ROLLBACK
test=# commit;
COMMIT
test=# select count(*) from customer where name='test';
count
-------
1
(1 row)