2016-09-29 8 views
7

मैं एक आरडीएस PostgreSQL उदाहरण सरल प्रश्नों, बहुत धीमी की तुलना में मैं उम्मीद करेंगे चल रहा है कि है।आरडीएस पर धीमी PostgreSQL अनुक्रमिक स्कैन? , विशेष रूप से अनुक्रमिक स्कैन एक मेज को कॉपी या एक मेज की गिनती की तरह -

उदा। create table copied_table as (select * from original_table) या select count(*) from some_table

एक 30GB मेज पर count(*) चल रहा है (, अनुक्रमित के साथ तुरंत एक vaccuum निम्नलिखित) लेता है ~ 15 मिनट।

यह एक आरडीएस db.r3.large, 15 जीबी मेमोरी, 400GB SSD है। मेट्रिक्स लॉग देखकर, मैंने कभी नहीं देखा है IOPS 1,400 से अधिक पढ़ें और आमतौर पर यह मेरे अपेक्षित आधार से 500 के आसपास है।

विन्यास: work_mem: 2GB, shared_buffers: 3GB, effective_cache_size: 8GB wal_buffers: 16MB, checkpoint_segments: 16

इस उम्मीद समय है? क्या मुझे उच्च आईओपीएस देखना चाहिए?

उत्तर

1

वहाँ बहुत ज्यादा नहीं आप कर सकते हैं 9.6 कि समानांतर अनुक्रमिक स्कैन, जो आरडीएस में अभी उपलब्ध नहीं है कार्यान्वित में सिवाय इसके कि Postgres में की तरह सादा गिनती प्रश्नों के आसपास करते हैं, है।

घटना हालांकि, वहाँ एक कुछ सुझाव है कि आप here मिल सकती है। आम तौर पर, पोस्टग्रेज़ को इंडेक्स केवल स्कैन करने का प्रयास करने की अनुशंसा की जाती है, इंडेक्स बनाने और प्रक्षेपण में इसके कॉलम बनाकर।

SELECT id FROM table WHERE id > 6 and id <100; 
-- or 
SELECT count(id) FROM table ... 

तालिका में उस कॉलम पर एक अनुक्रमणिका होना चाहिए।

प्रश्नों है कि आप उदाहरण के रूप में सामने आ रहा, अनुक्रमिक स्कैन से नहीं बचेगा। CREATE तालिका के लिए, यदि आपको तालिका में ऑर्डर की परवाह नहीं है, तो आप कुछ बैकएंड खोल सकते हैं और एक प्रमुख श्रेणी द्वारा फ़िल्टर करके समानांतर में आयात कर सकते हैं। इसके अलावा, आरडीएस पर इसे गति देने का एकमात्र तरीका आईओपी बढ़ रहा है।

+1

धन्यवाद, लेकिन मैं पुष्टि करते हैं कि मेरी PostgreSQL सही तरीके से कॉन्फ़िगर देख रहा हूँ, और कहा कि मैं प्रदर्शन है कि मैं आरडीएस से होना चाहिए हो रही है। – jastr

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