คำถามติดแท็ก postgresql

PostgreSQL ทุกรุ่น เพิ่มแท็กเฉพาะรุ่นเพิ่มเติมเช่น postgresql-11 หากบริบทนั้นสำคัญ

1
Postgresql: ย้ายฐานข้อมูลไปยัง tablespace ใหม่
ฉันต้องการย้ายฐานข้อมูล (ตารางดัชนี ฯลฯ ) ไปยังพื้นที่ตารางใหม่อย่างสมบูรณ์ ฉันรู้วิธีย้ายแต่ละรายการแยกกัน แต่มีวิธีย้ายทุกอย่างในครั้งเดียวหรือไม่ ฉันใช้ postgresql 9.1
10 postgresql 

2
เกี่ยวกับ“ การประมวลผลรหัสธุรกรรม”
ตอนนี้ฉันอ่านเอกสารเกี่ยวกับ "Transaction ID Wraparound" แต่มีบางอย่างที่ฉันไม่เข้าใจจริงๆเอกสารเป็น url ต่อไปนี้ http://www.postgresql.org/docs/9.0/static/routine-vacuuming .html # สูญญากาศ-FOR-วิจิตร 23.1.4 การป้องกันการล้มเหลวของการห่อธุรกรรม ID ความหมายของธุรกรรม MVCC ของ PostgreSQL นั้นขึ้นอยู่กับความสามารถในการเปรียบเทียบหมายเลขรหัสธุรกรรม (XID): เวอร์ชันแถวที่มีการแทรก XID มากกว่า XID ของธุรกรรมปัจจุบันคือ "ในอนาคต" และไม่ควรมองเห็นธุรกรรมปัจจุบัน แต่เนื่องจาก ID ธุรกรรมมีขนาดที่ จำกัด (32 บิต) คลัสเตอร์ที่รันเป็นเวลานาน (มากกว่า 4 พันล้านธุรกรรม) จะได้รับการใช้งาน ID ของรายการ: ตัวนับ XID ล้อมรอบเป็นศูนย์และธุรกรรมทั้งหมดที่อยู่ใน อดีตดูเหมือนจะเป็นในอนาคต - ซึ่งหมายความว่าผลผลิตของพวกเขาจะมองไม่เห็น ในระยะสั้นการสูญเสียข้อมูลหายนะ (ที่จริงแล้วข้อมูลยังคงอยู่ที่นั่น แต่มันก็สบายดีถ้าคุณไม่สามารถทำได้) เพื่อหลีกเลี่ยงสิ่งนี้จำเป็นต้องดูดทุกตารางในฐานข้อมูลทุก …
10 postgresql 


2
SELECT ลบแถวที่ตายแล้วเช่น VACUUM หรือไม่
ฉันเล่นซอVACUUMและสังเกตเห็นพฤติกรรมที่ไม่คาดคิดบางอย่างที่SELECTไอเอ็นจีแถวจากตารางดูเหมือนว่าจะลดงานที่VACUUMต้องทำหลังจากนั้น ทดสอบข้อมูล หมายเหตุ: autovacuum ถูกปิดใช้งาน CREATE TABLE numbers (num bigint); ALTER TABLE numbers SET ( autovacuum_enabled = 'f', toast.autovacuum_enabled = 'f' ); INSERT INTO numbers SELECT generate_series(1, 5000); ทดลอง 1 ตอนนี้เราทำการอัพเดทในทุกแถว UPDATE numbers SET num = 0; และเมื่อเราวิ่งVACUUM (VERBOSE) numbers;เราได้ INFO: vacuuming "public.numbers" INFO: "numbers": removed 5000 row versions in …

3
คำหลัก“ ALIAS” ใช้จริงหรือไม่
ตาม PostgreSQL 7.1 ถึง 9.1 (ไม่สนับสนุนในขณะนี้) ALIASจะแสดงรายการเป็นคำสงวนอย่างน้อยสำหรับ SQL-99 รุ่นที่ใหม่กว่าจะไม่แสดง - แนะนำว่ามันถูกทิ้งเป็นคำสงวน เอกสาร PostgreSQL เก่ากล่าวว่า"การปรากฏตัวของคำสำคัญไม่ได้บ่งบอกถึงการมีอยู่ของคุณสมบัติ" เมื่อ aliasing ตารางหรือคอลัมน์ที่ผมเคยเห็นแต่ไม่เคยASALIAS คีย์เวิร์ด SQL ALIASใช้อยู่ที่ไหน (หรือเคย) มันเคยใช้งานหรือสงวนไว้สำหรับใช้ในอนาคตเท่านั้นหรือไม่

1
การ zeroing WAL เซกเมนต์ใน Postgres
เรามีฐานข้อมูล Postgres ค่อนข้างต่ำพร้อมการจัดเก็บลงสื่อถาวรอย่างต่อเนื่องเพื่อบีบอัดแต่ละส่วน WAL และส่งไปยัง S3 เนื่องจากเป็นระบบที่มีปริมาณน้อยจึงเข้าชมarchive_timeoutทุกๆ 10 นาทีและเก็บถาวรส่วน WAL ที่ไม่ได้ใช้ซึ่งส่วนใหญ่ใช้ในการบีบอัดได้ดีเนื่องจากเป็นศูนย์ อย่างไรก็ตาม Postgres จะรีไซเคิลเซกเมนต์ WAL เพื่อหลีกเลี่ยงค่าใช้จ่ายในการจัดสรรไฟล์ใหม่ที่สวิตช์ WAL แต่ละอันซึ่งมีประโยชน์ในสถานการณ์โหลดสูง แต่ก็หมายความว่าหลังจากเกิดกิจกรรมที่หนักกว่าปกติตอนนี้ไฟล์เซกเมนต์ WAL ของเราเต็มแล้ว ของขยะจากเซ็กเมนต์ก่อนหน้าและไม่บีบอัดได้ดีเลย เรากำลังจัดเก็บสำเนาขยะทั้งหมดนี้จำนวนมาก มีวิธีใดที่จะลดปริมาณพื้นที่ที่เราใช้ในการเก็บถาวร WAL ของเราหรือไม่ ความเป็นไปได้ย่อยบางอย่าง: ป้องกัน Postgres จากการรีไซเคิลกลุ่ม WAL อย่างใดดังนั้นจึงเริ่มต้นด้วยไฟล์ zeroed ในแต่ละครั้ง เอกสารไม่ได้ระบุว่ามีตัวเลือกสำหรับการทำเช่นนี้ แต่ฉันอาจพลาดไป ให้ Postgres เป็นศูนย์ไฟล์ WAL เมื่อมันเริ่มต้น / เสร็จสิ้นการใช้งาน อีกครั้งเอกสารดูเหมือนจะไม่แนะนำว่าเป็นไปได้ เป็นศูนย์ภายนอกหรือลบไฟล์เซกเมนต์ WAL บางส่วนในขณะที่ไม่ได้ใช้งาน มีวิธีที่ปลอดภัยในการระบุไฟล์นี้หรือไม่? ศูนย์ส่วนที่ไม่ได้ใช้ของเซ็กเมนต์ก่อนเก็บถาวรโดยใช้เอาต์พุตจากpg_xlogdumpเพื่อค้นหาตำแหน่งที่ขยะเริ่มต้น เป็นไปได้แม้ว่าฉันจะไม่ชอบมัน …

1
สถิติของดัชนีในพาร์ติชั่นที่ไม่ได้ใช้ในการสืบค้นบนตารางทั้งหมด
การเข้าร่วมต่อไปนี้มีการประมาณการแถวแตกต่างกันมากเมื่อทำการเข้าร่วมในพาร์ทิชันเทียบกับเมื่อเข้าร่วมในตารางทั้งหมด: CREATE TABLE m_data.ga_session ( session_id BIGINT NOT NULL, visitor_id BIGINT NOT NULL, transaction_id TEXT, timestamp TIMESTAMP WITH TIME ZONE NOT NULL, day_id INTEGER NOT NULL, [...] device_category TEXT NOT NULL, [...] operating_system TEXT ); สำหรับพาร์ติชันทั้งหมด: CREATE TABLE IF NOT EXISTS m_data.ga_session_20170127 ( CHECK (day_id = 20170127) ) INHERITS (m_data.ga_session); …

4
ฉันจะสร้างอนุกรมเวลาใน PostgreSQL ได้อย่างไร
หากคุณต้องการสร้างชุดข้อมูลวันที่ให้ดูคำถามนี้ สมมติว่าฉันต้องการสร้างชุดข้อมูลทุก 5 นาทีเป็นเวลา 24 ชั่วโมง ฉันจะทำเช่นนั้นใน PostgreSQL ได้อย่างไร PostgreSQL สามารถgenerate_series()จากแต่ไม่ได้มาจากtimestamptime มันจะดีกว่าถ้าเลือก timestamp ตามอำเภอใจหรือมีวิธีอื่นในการสร้างซีรีส์?

2
กำหนดลำดับการจัดเรียงคีย์ jsonb ที่เกี่ยวข้องกับอาร์เรย์
ฉันมีตารางใน PostgreSQL พร้อมข้อมูลบางส่วน: create table t2 ( key jsonb, value jsonb ); INSERT INTO t2(key, value) VALUES ('1', '"test 1"') ,('2', '"test 2"') ,('3', '"test 3"') ,('[]', '"test 4"') ,('[1]', '"test 5"') ,('[2]', '"test 6"') ,('[3]', '"test 7"') ,('[1, 2]', '"test 8"') ,('[1, 2, 3]', '"test 9"') ,('[1, 3]', '"test …

2
Postgres ด้วยสถาปัตยกรรม pgpool
ด้านล่างนี้เป็นตัวอย่างสถาปัตยกรรม pgpool: นี่หมายความว่าคุณจะต้องมี pgpool บนเซิร์ฟเวอร์เดียว จริงหรือ เมื่อฉันมองไปที่การตั้งค่าที่ผมยังเห็นว่าคุณกำหนดค่าแบ็กเอนด์ภายในpgpool.conf; ดังนั้นมันจึงมีความหมายเพิ่มเติม แต่มันไม่ได้อธิบายว่าทำไมฉันจึงเห็น pgpool บนเซิร์ฟเวอร์ส่วนหลังด้วย เมื่อดูเอกสารฉันเห็นด้วย: หากคุณใช้ PostgreSQL 8.0 หรือใหม่กว่าแนะนำให้ติดตั้งฟังก์ชั่น pgpool_regclass ใน PostgreSQL ทั้งหมดเพื่อให้เข้าถึงได้โดย pgpool-II ขอแนะนำอย่างยิ่งเนื่องจากจะใช้ภายในโดย pgpool-II ดังนั้นฉันไม่แน่ใจว่าจะคิดอย่างไร หากเป็นวิธีที่ดีที่สุดที่จะมี pgpool ในแบ็กเอนด์ทั้งหมดหรือเพียงเซิร์ฟเวอร์เฉพาะ?

2
Amazon RDS Postgresql เพิ่มส่วนขยายใหม่
ฉันต้องการดาวน์โหลดอินสแตนซ์jsonbxไปยัง RDS คุณสมบัติ RDS PostgreSQL รองรับการแสดงคุณสมบัติในตัวเท่านั้น นี่หมายความว่าไม่มีทางที่เราจะสามารถติดตั้งส่วนขยายไปยัง RDS ซึ่งไม่ได้อยู่ในฟีเจอร์เมทริกซ์ ? มีวิธีแก้ไขไหมสำหรับเรื่องนี้?

1
วิธีเรียกคืนพื้นที่ที่ใช้โดยดัชนีที่สร้างขึ้นบางส่วนและถูกยกเลิกโดยไฟฟ้าดับ
ฉันใช้ postgres (postgis) 9.4.2 บน mac (10.10.4) ฉันมีตารางใหญ่สองสามอัน (หลาย TB) ในระหว่างการสร้างดัชนีของหนึ่งในนั้นที่ใช้เวลาประมาณหนึ่งสัปดาห์ฉันดูการลดลงของพื้นที่ HD ที่มีอยู่ตามที่คุณคาดว่าจะถึงจุดที่ดัชนีจะเสร็จสิ้นเมื่อไฟฟ้าดับนานกว่าแบตเตอรี่และระบบ ลงไป. ฉันปิดบัฟเฟอร์และfillfactor=100ระหว่างการสร้างเนื่องจากเป็นแหล่งข้อมูลแบบคงที่ ในการรีบู๊ตพื้นที่ที่เหลืออยู่บนไดรฟ์จะอยู่ในตำแหน่งที่ใกล้ถึงจุดสิ้นสุดของการสร้างดัชนี การวิเคราะห์สูญญากาศไม่เพิ่มพื้นที่ว่าง ฉันลองวางโต๊ะแล้วนำเข้าไปใหม่และนั่นก็ไม่ได้ทำให้เนื้อที่ลดลง ตอนนี้ฉันอยู่ในสถานที่ที่ฉันมีพื้นที่ไม่เพียงพอที่จะสร้างดัชนี ไฟล์ถูกสร้างขึ้นในระหว่างการสร้างดัชนีติดอยู่ในบริเวณขอบรกบางส่วนที่ไม่สามารถลบออกได้โดยระบบเนื่องจากวิธีการที่เครื่องหยุดทำงานในระหว่างไฟฟ้าดับหรือไม่? เมื่อฉันมองไปที่ตารางขนาด + ดัชนีในฐานข้อมูล (ซึ่งเป็นเพียงข้อมูลในไดรฟ์นั้น) พวกเขาเพิ่มขึ้นประมาณ6TB ไดรฟ์คือ8TBและเหลือน้อยกว่า500GBบนไดรฟ์ดังนั้นดูเหมือนว่าจะมีประมาณ 1.5TB ที่หายไปที่ไหนสักแห่งซึ่งมีขนาดเท่ากับดัชนีที่น่าจะเป็น ความคิดใด ๆ

2
เรียกใช้แบบสอบถามที่ซับซ้อนสำหรับทุกวันในช่วง
ฉันมีตารางคำสั่งซื้อแล้ว Column | Type | Modifiers ------------+-----------------------------+----------------------------------------------------- id | integer | not null default nextval('orders_id_seq'::regclass) client_id | integer | not null start_date | date | not null end_date | date | order_type | character varying | not null ข้อมูลมีคำสั่งยืนไม่ทับซ้อนกันสำหรับ client_id และบางครั้งคำสั่งชั่วคราวที่แทนที่คำสั่งหยุดงานใน start_date เมื่อพวกเขามี client_id ที่ตรงกัน มีข้อ จำกัด ในระดับแอปพลิเคชันทำให้คำสั่งซื้อประเภทเดียวกันไม่ทับซ้อนกัน id | …

3
มันมีเหตุผลที่จะทำเครื่องหมายคอลัมน์ทั้งหมด แต่เป็นหนึ่งในคีย์หลัก?
ฉันมีโต๊ะที่เป็นตัวแทนของภาพยนตร์ เขตข้อมูลคือ: id (PK), title, genre, runtime, released_in, tags, origin, downloads. ฐานข้อมูลของฉันไม่สามารถปนเปื้อนด้วยแถวที่ซ้ำกันดังนั้นฉันต้องการบังคับใช้ซ้ำ ปัญหาคือว่าภาพยนตร์ที่แตกต่างกันอาจมีชื่อเดียวกันหรือแม้กระทั่งเขตเดียวกันยกเว้นและtags downloadsวิธีการบังคับใช้เอกลักษณ์? ฉันคิดถึงสองวิธี: สร้างฟิลด์ทั้งหมดยกเว้นdownloadsคีย์หลัก ฉันติดตามdownloadsเพราะมันเป็น JSON และอาจส่งผลกระทบต่อประสิทธิภาพการทำงาน เก็บidเป็นคีย์หลักเท่านั้น แต่เพิ่มข้อ จำกัด ที่ไม่ซ้ำกับคอลัมน์อื่น ๆ ทั้งหมด (ยกเว้นอีกครั้งdownloads) ฉันอ่านคำถามซึ่งคล้ายกันมาก แต่ฉันไม่เข้าใจว่าฉันควรทำอย่างไร ขณะนี้ตารางนี้ไม่เกี่ยวข้องกับตารางอื่น ๆ แต่ในอนาคตอาจเป็น ในขณะนี้ฉันมีบันทึกน้อยกว่า 20,000 รายการเล็กน้อย แต่ฉันคาดว่าจำนวนจะเพิ่มขึ้น ฉันไม่รู้ว่าสิ่งนี้เกี่ยวข้องกับปัญหาหรือไม่ แก้ไข:ฉันแก้ไขสคีมาและนี่คือวิธีที่ฉันจะสร้างตาราง: CREATE TABLE movies ( id serial PRIMARY KEY, title text NOT NULL, runtime …

2
“ ข้อผิดพลาด: ตัวอักษรของอาเรย์ที่ผิดรูปแบบ” เมื่อใช้ json_to_record กับอิลิเมนต์อาร์เรย์ JSON ใน Postgres 9.4
นี่แสดงให้เห็นปัญหาอย่าง: เมื่อคอลัมน์ b เป็นข้อความประเภท แต่ไม่ใช่อาร์เรย์จะทำงานดังต่อไปนี้: select * from json_to_record('{"a":1,"b":["hello", "There"],"c":"bar"}') as x(a int, b text, d text); a | b | d ---+--------------------+--- 1 | ["hello", "There"] | แต่ถ้าฉันกำหนดbคอลัมน์เป็นอาร์เรย์ฉันจะได้รับข้อผิดพลาดนี้: select * from json_to_record('{"a":1,"b":["hello", "There"],"c":"bar"}') as x(a int, b text[], d text) ERROR: malformed array literal: "["hello", "There"]" DETAIL: "[" must …

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.