2017-05-01 7 views
10

मैं postgres बाहर कोशिश कर रहा था google-क्लाउड-एसक्यूएल के साथ बढ़ती है और लोड नहीं एक साधारण स्कूल स्कीमाPostgres प्रदर्शन कोर की संख्या में वृद्धि

CREATE TABLE school ( 
    id SERIAL NOT NULL PRIMARY KEY, 
    name TEXT NOT NULL 
); 

CREATE TABLE class ( 
    id SERIAL NOT NULL PRIMARY KEY, 
    name TEXT, 
    school_id INTEGER NOT NULL REFERENCES school 
); 

CREATE TABLE student ( 
    id SERIAL NOT NULL PRIMARY KEY, 
    name TEXT, 
    class_id INTEGER NOT NULL REFERENCES class 
); 

-- ALL id and foreign keys have indexs 

लोडेड 1500 स्कूल के साथ कुल में ~ 15 लाखों लोगों की पंक्ति, 500 वर्ग प्रति स्कूल, प्रति छात्र 200 छात्र।

उसके बाद

pgbench -c 90 -f ./sql.sql -n -t 1000 

2 कोर, 7.5 जीबी, 90 ग्राहक के साथ एक सरल pgbench स्क्रिप्ट

\setrandom sId1 1 20000000 
\setrandom sId2 1 20000000 
\setrandom sId3 1 20000000 

select count(*) from school s 
join class c on s.id=c.school_id 
join student stu on c.id=stu.class_id where s.id=:sId1; 

select count(*) from school s 
join class c on s.id=c.school_id 
join student stu on c.id=stu.class_id where s.id=:sId2; 

select count(*) from school s 
join class c on s.id=c.school_id 
join student stu on c.id=stu.class_id where s.id=:sId3; 

अब स्क्रिप्ट चलाने बना सकते हैं -

OUTPUT: 
number of transactions actually processed: 90000/90000 
tps = 1519.690555 (including connections establishing) 
tps = 2320.408683 (excluding connections establishing 

26 कोर, 30 जीबी, 9 0 क्लाइंट-

number of transactions actually processed: 90000/90000 
tps = 1553.721286 (including connections establishing) 
tps = 2405.664795 (excluding connections establishing) 

प्रश्न: क्यों हम केवल 80 टी पी एस 26 कोर के लिए 2 कोर से वृद्धि किए हैं?

+2

9.6 से पहले PostgreSQL के संस्करण [समानांतर प्रश्न] नहीं हैं (https://www.postgresql.org/docs/current/static/parallel-query.html)। यह एक साथ कई प्रश्नों को चला सकता है, लेकिन यह एक क्वेरी के लिए एकाधिक धागे का उपयोग नहीं कर सकता है। – Andomar

+0

मैं समझता हूं लेकिन मेरे पास 9 0 क्लाइंट है pgbench में 2 कोर हैंडलिंग 90 क्लाइंट बनाम 26 कोर हैंडलिंग 90 क्लाइंट हैंडलिंग में कोई अंतर होना चाहिए .. सही? ... या मुझे कुछ याद आ रहा है .. – Bhuvan

+0

आप इससे कनेक्ट नहीं हैं एक सत्र पूलर - सही? कृपया उपयोग बंदरगाह या अन्य तरीका दें सुनिश्चित करें कि आप उसी 1 सत्र में 90 क्लाइंट साझा नहीं करते हैं। उदाहरण के लिए –

उत्तर

2

मैंने पोस्टग्रेस आईआरसी पर एक ही सवाल पूछा।

समुदाय को यकीन था कि मैं क्लाइंट पीजीबीएनएच को अधिकतम कर रहा था, उन्होंने -j4 को पीजीबीएनएच में उपयोग करने का सुझाव दिया और टीपीएस प्रति सेकेंड 23k तक बढ़ गया।

-1

क्योंकि एक व्यक्ति SELECT केवल एक कोर पर चलने वाली एक प्रक्रिया में काम करेगा। अतिरिक्त कोर जोड़ने से कई समेकित संचालन किए जा सकते हैं। तो यदि आप डेटाबेस में 1,000 एक साथ पूछे जाने वाले प्रश्नों को फेंकना चाहते थे, तो वे 2 कोर के बजाय 26 कोर पर अधिक तेज़ी से निष्पादित करेंगे।

+0

से मिला है लेकिन मेरे मामले में pgbench 90 एक साथ क्लाइंट चला रहा है जिसका मतलब है कि किसी दिए गए आंदोलन में 90 समांतर चयन प्रश्न चल रहे हैं, इसलिए 2 बनाम 26 कोर के बीच निष्पादन समय में कोई अंतर नहीं होना चाहिए। – Bhuvan

संबंधित मुद्दे