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

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

5
PostgreSQL: วิธีการสำรองข้อมูลเพียงหนึ่ง Schema จากฐานข้อมูลและเรียกคืนบนเซิร์ฟเวอร์อื่น
ฉันมีฐานข้อมูลชื่อ "A" ซึ่งมีสองสกีมา "B" และ "C" ต้องการสำรองและกู้คืน Schema "B" บนเซิร์ฟเวอร์อื่นหรือไม่ ไม่แน่ใจว่าจะทำอย่างไรเมื่อฉันยังใหม่กับ Postgres ฉันต้องสร้าง DB ใหม่ในเซิร์ฟเวอร์ใหม่เป็นชื่อ "A" แล้วเรียกคืน Schema "B" ในนั้น กรุณาช่วยด้วยคำสั่ง --- ข้อมูลจากความคิดเห็นต่อคำตอบของปีเตอร์: ฉันต้องการสำรองและกู้คืนข้อมูล Schema "B" + ประการที่สองฉันลืมที่จะพูดถึงว่า Postgresql 9.1 ทำงานบน Ubuntu 12.04

2
เป็นวิธีที่ทันสมัยในการแบ่งพาร์ติชัน PostgreSQL ในเครื่องต่าง ๆ เมื่อข้อมูลคือ“ การแบ่งพาร์ติชันตามธรรมชาติ”
คำถามนี้ถูกโยกย้ายจาก Stack Overflow เพราะสามารถตอบได้ใน Exchange Administrators Stack Exchange อพยพ 7 ปีที่ผ่านมา หลังจากผ่านไปหลายปีที่อาศัยอยู่ในพื้นที่ "NoSQL" ตอนนี้ฉันมีปัญหาที่ค่อนข้าง "เชิงสัมพันธ์" ในธรรมชาติ วันนี้ฉันเห็นร้านค้าข้อมูลที่มีดวงตาที่แตกต่างไปจากเดิม สิ่งที่คล้ายกับ Riak ทำให้ฉันเสียไปในทางที่ฉันจะทนต่อความล้มเหลวเพียงจุดเดียวไม่ได้อีกต่อไป "ลงเพื่อซ่อมบำรุง" ฯลฯ แน่นอนว่า (หรือฉันหวังว่า) ฉันไม่ได้สติเสียอีกเลย นี่เป็นโครงการส่วนบุคคลที่ยังไม่ค่อยมีข้อกำหนดที่สูงมาก วิธีแก้ไขปัญหาส่วนใหญ่ไม่ได้ให้สิ่งที่ฉันต้องการ (อย่างน้อยก็เหลือบ) อาจเป็นเพราะปัญหาของฉันค่อนข้าง "ง่าย" ในการแก้ปัญหา อย่างน้อยในระดับแนวคิด (ละเว้นข้อ จำกัด ที่ RDBMs นำมาสู่ตาราง) ฉันมีข้อมูล "แบ่งปัน" เล็กน้อยซึ่งสามารถทำซ้ำได้อย่างอิสระ มันไม่ได้มีข้อกำหนดของความมั่นคงอย่างหนัก สิ่งนี้สามารถเก็บไว้ในฐานข้อมูลที่เหมือนไดนาโมและจะขยายได้อย่างไม่ จำกัด แต่ฉันก็ยังอยากจะไปกับฐานข้อมูลเดียวถ้าเป็นไปได้ ฉันมีข้อมูล "ต่อผู้ใช้" มากมาย นั่นคือ - ผู้ใช้จำนวนมากด้วยผู้ใช้ทุกคนที่มีข้อมูลที่มีขนาดพอเหมาะพอดีจะเก็บไว้ในโหนด …

1
จะเชื่อมต่อกับฐานข้อมูล PostgreSQL ระยะไกลบน Ubuntu โดยใช้ pgAdmin3 ได้อย่างไร
ฉันพยายามตั้งค่าฐานข้อมูล PostgreSQL บนเครื่อง Ubuntu ฉันต้องการเข้าถึงโดยใช้ pgAdmin3 จากเครื่องระยะไกล ฉันจะตั้งค่านี้ได้อย่างไร ฉันได้ติดตั้งฐานข้อมูล PostgreSQL บน Ubuntu โดยใช้: sudo apt-get install postgresql ในฉัน/etc/postgresql/9.1/main/pg_hba.confมีฉันบรรทัดนี้: host all all all password ดังนั้นจึงควรยอมรับการเชื่อมต่อจากที่อยู่ IPv4 และรหัสผ่านทั้งหมดควรส่งเป็นข้อความที่ชัดเจน (นี่คือเหตุผลการพัฒนา) ถ้าฉันใช้คำสั่งนี้เพื่อดูว่าบริการใดกำลังทำงานอยู่: sudo netstat -tulpn ฉันเห็นบรรทัดเหล่านี้ซึ่งแสดงว่า PostgreSQL ยอมรับการเชื่อมต่อบนพอร์ตเริ่มต้น: tcp 0 0 127.0.0.1:5432 0.0.0.0:* LISTEN 3561/postgres เมื่อฉันพยายามเชื่อมต่อกับเซิร์ฟเวอร์ PostgreSQL นี้จากคอมพิวเตอร์ระยะไกลในเครือข่ายท้องถิ่นเดียวกันฉันได้รับข้อความแสดงข้อผิดพลาดนี้: เซิร์ฟเวอร์ไม่ฟัง เซิร์ฟเวอร์ไม่ยอมรับการเชื่อมต่อ: รายงานไลบรารีการเชื่อมต่อ ไม่สามารถเชื่อมต่อกับเซิร์ฟเวอร์: การเชื่อมต่อถูกปฏิเสธเซิร์ฟเวอร์ทำงานบนโฮสต์ "10.0.1.7" …

2
วิธีการตั้งค่าฐานข้อมูล Postgresql เพื่อดูวันที่เป็น "MDY" อย่างถาวร
ฉันจะตั้งค่าฐานข้อมูลของฉันเพื่อดู 'วันที่' เป็น "MDY" โดยไม่ต้องทำงานได้อย่างไร: SET datestyle = "ISO, MDY"; ทุกครั้งที่ฉันพยายามเข้าถึง ฉันใช้ Postgresql รุ่น 9.1, Ubuntu 12.04 ตำแหน่งที่ตั้งของระบบของฉันในเวลาของการติดตั้งฐานข้อมูลถูกกำหนดให้en_CA.utf8และเมื่อเร็ว ๆ en_US.utf8นี้ผมเปลี่ยนไป show lc_CTYPE ผลตอบแทน: -> "en_CA.UTF-8" แต่ show LC_CoLLATE ผลตอบแทน: -> "en_CA.UTF-8"

3
LIKE ถูกนำไปใช้อย่างไร
ทุกคนสามารถอธิบายวิธีการใช้งานตัวดำเนินการ LIKE ในระบบฐานข้อมูลปัจจุบัน (เช่น MySQL หรือ Postgres) ได้อย่างไร หรือชี้ให้ฉันอ้างอิงบางอย่างที่อธิบายได้หรือไม่ แนวทางที่ไร้เดียงสาคือการตรวจสอบแต่ละเร็กคอร์ดดำเนินการจับคู่นิพจน์ปกติหรือการจับคู่สตริงบางส่วนในสาขาที่สนใจ แต่ฉันมีความรู้สึก (หวัง) ว่าระบบเหล่านี้ทำสิ่งที่ชาญฉลาดขึ้น

1
มีวิธีที่ดีในการเรียกใช้ทริกเกอร์สำหรับแต่ละระเบียนในตาราง postgres หรือไม่?
ฉันมีระบบที่ฉันไม่สามารถควบคุมการออกแบบของบางตาราง (ทำซ้ำผ่าน Slony-I) และดังนั้นฉันจึงมีชุดของสิ่งที่เราอ้างถึงเป็น 'shadow tables' ซึ่งฉันดึงข้อมูลบางส่วนออกจากตารางที่จำลองแบบแล้ว และเก็บไว้ในแบบฟอร์มการประมวลผลที่ฉันต้องการในขณะที่แยกระเบียนที่ฉันต้องการละเว้น ตอนนี้หลังจากตั้งค่าแบบจำลองใหม่ฉันเรียกใช้การอัปเดตและตั้งค่ากลับเป็นของตัวเอง (เช่นUPDATE tablename SET field=field) เพื่อบังคับให้ทริกเกอร์ทำงาน แต่ตารางบางตารางมีระเบียนนับล้านและเติบโตและใช้เวลา 30 นาที . (แล้วมีวัคซีนด้วย) มีวิธีที่ดีกว่าในการทริกเกอร์มันหรือวิธีเขียนฟังก์ชั่นบางอย่างเพื่อให้ทำงานกับอินพุตที่ส่งผ่านหรือNEWขึ้นอยู่กับบริบทการโทร? ฉันลังเลที่จะเก็บฟังก์ชั่นที่แตกต่างกันสองอย่างเอาไว้เพราะฉันเห็นหลายครั้งที่มีการอัปเดต

3
วิธีเลือกการเปรียบเทียบสำหรับฐานข้อมูลสากล?
ฉันกำลังออกแบบฐานข้อมูลที่จะเก็บข้อมูลในภาษาต่าง ๆ (โดยใช้ UTF-8) ดังนั้นฉันคิดว่าวิธีที่ดีที่สุดในการแสดงผลลัพธ์ของแบบสอบถามคือการสั่งซื้อตามภาษาของผู้ใช้ในระหว่างการสืบค้น ( เพราะมีมากกว่าหนึ่ง วิธีที่ถูกต้องในการทำเช่นนั้น ) ดังนี้: SELECT a < b COLLATE "de_DE" FROM test1; สมมติว่านี่เป็นวิธีที่ถูกต้องในการทำงานกับข้อมูลระหว่างประเทศซึ่งเป็นการเปรียบเทียบที่ดีที่สุดสำหรับฐานข้อมูลตัวเอง? เอกสาร PostgreSQL บอกว่า : การเปรียบเทียบทั้ง C และ POSIX ระบุพฤติกรรม "ดั้งเดิม C" ซึ่งมีเพียงตัวอักษร ASCII "A" ถึง "Z" เท่านั้นที่จะถือว่าเป็นตัวอักษรและการเรียงลำดับจะกระทำอย่างเคร่งครัดโดยค่าไบต์รหัสตัวอักษร ฉันคิดว่านี่เป็นตัวเลือกที่ดีที่สุดในกรณีนี้หรือฉันผิด (คำถามโบนัส: มันช้าเกินไปที่จะเลือกการเรียงในแบบสอบถามหรือไม่)

1
ขีด จำกัด ขนาดของอักขระต่างกันไป Postgresql
ขีด จำกัด ขนาดของประเภทข้อมูลต่างๆใน postgresql คือเท่าไหร่ ผมเห็นบางที่สำหรับcharacter varying(n), varchar(n) nต้องอยู่ระหว่าง 1 ถึง 10485760. ว่าเป็นความจริง? อะไรคือขนาดที่ถูกต้องสำหรับcharacter(n), char(n)และtext?

1
จำนวนการเชื่อมต่อที่ใช้งานและการเชื่อมต่อที่เหลือ
ฉันต้องการรับสถิติเกี่ยวกับจำนวนการเชื่อมต่อสูงสุดในช่วงระยะเวลาหนึ่ง ฉันรู้ว่าpg_stat_activityมุมมองชอบselect count(*) from pg_stat_activityแต่ฉันคิดว่าวิธีนี้ไม่ฉลาดมาก มีมุมมองหรือตารางอื่น ๆ ที่สามารถให้ข้อมูลที่ฉันต้องการได้หรือไม่?

3
ใช้ pg_dump บนเซิร์ฟเวอร์ hot แตนหรือยัง?
คำเตือน: ฉันยอมรับว่ายังไม่ได้ลองสิ่งนี้ แต่ฉันไม่แน่ใจว่าฉันจะรู้ว่ามันทำงานไม่ถูกต้องหรือไม่ดังนั้นฉันต้องการถาม ฉันต้องการเรียกใช้งานการสำรองข้อมูลรายคืน (ผ่านpg_dumpall) จากเซิร์ฟเวอร์ hot standby ที่ใช้การจำลองแบบสตรีมมิ่งเพื่อหลีกเลี่ยงการวางภาระนั้นไว้บนหลัก ฉันได้เห็นเพียงการกล่าวถึงผู้คนที่ได้รับ gotchas เช่นที่นี่และที่นี่แต่มีคำแนะนำน้อยมาก ไม่เป็นไรหากการสำรองข้อมูลล่าช้าไปทางด้านหลังหลักเล็กน้อยตราบใดที่มันสอดคล้องกัน (ซึ่งควรจะเป็น) คำถามของฉันคือ: ฉันต้องการทำสิ่งนี้จริงๆหรือควรทำการสำรองข้อมูลบนเซิร์ฟเวอร์หลัก ทำไม? เมื่อทำการดัมพ์ในโหมดแสตนด์บายฉันต้องใช้การตั้งค่าใดและขั้นตอนใดที่ฉันควรทำอย่างถูกต้อง? เช่นฉันจะต้องหยุดการจำลองแบบในช่วงระยะเวลาของการสำรองข้อมูลหรือไม่

2
ใช้ SELECT ในส่วนคำสั่ง WHERE ของ SELECT อื่น
ผมได้ทำแอพลิเคชันระยะไกลร่างด้านบนของ libpq สำหรับPostrgreSQL มันทำงานได้ดี แต่ฉันได้ทำโปรไฟล์การทำงานทั่วไปของแอปพลิเคชัน สำหรับผลลัพธ์ทางธุรกิจแต่ละครั้งสุดท้ายที่ฉันผลิตมันเกิดขึ้นที่ฉันเรียกบางอย่างเช่น 40 ข้อเลือก (มากกว่า tcpip) ฉันมีการเตือนความจำจาก SQL-Server เตือนให้ฉันลดจำนวนการโต้ตอบระหว่างแอปพลิเคชันระยะไกลและฐานข้อมูล จากการวิเคราะห์การเลือกของฉันฉันคิดว่าฉันสามารถลดจำนวนนี้เป็น 3 SELECTข้อโดยใช้การรวม แต่ผมจำไม่ได้ว่าไวยากรณ์สำหรับการใช้ผลของอีกSELECTSELECT เช่น: SELECT * FROM individual INNER JOIN publisher ON individual.individual_id = publisher.individual_id WHERE individual.individual_id = 'here I would like to use the results of a another select' สิ่งนี้SELECTจะเป็นสิ่งที่เรียบง่าย: SELECT identifier FROM another_table WHERE …

1
ทำไมไม่เข้ากับชุดที่มีค่า NULL จะคืนค่าเป็น FALSE / NULL เสมอ?
ฉันมีแบบสอบถาม (สำหรับ Postgres และ Informix) ที่มีส่วนNOT INคำสั่งย่อยที่มีแบบสอบถามย่อยในบางกรณีที่ส่งคืนNULLค่าทำให้ส่วนคำสั่งนั้น (และแบบสอบถามทั้งหมด) ไม่สามารถส่งคืนสิ่งใดได้ วิธีที่ดีที่สุดที่จะเข้าใจสิ่งนี้คืออะไร? ฉันคิดว่าNULLเป็นสิ่งที่ไม่มีค่าและดังนั้นจึงไม่ได้คาดหวังแบบสอบถามที่จะล้มเหลว NULLแต่เห็นได้ชัดว่าไม่ใช่วิธีที่ถูกต้องที่จะคิดว่า

2
ฉันสามารถเลือกข้อมูลที่ถูกแทรกในการทำธุรกรรมที่ไม่มีข้อผูกมัดเดียวกันได้หรือไม่?
อาจเป็นคำถามเริ่มต้นที่โง่ แต่ฉันไม่สามารถหาคำตอบได้ทุกที่ ทุกที่ที่ฉันอ่านเกี่ยวกับสิ่งTransaction Isolationที่แก้ปัญหาการเปิดเผยข้อมูลภายในธุรกรรมที่เกิดขึ้นพร้อมกัน ความกังวลของฉันคือพฤติกรรมภายในธุรกรรมเดียว หากฉันเริ่มต้นธุรกรรมให้แทรกข้อมูลบางส่วนฉันจะสามารถเลือกได้ทันที - ยังคงอยู่ในการทำธุรกรรมเดียวกัน ถ้าใช่พฤติกรรมนี้สามารถเปลี่ยนแปลงได้ในลักษณะเดียวกันเช่นแยกธุรกรรมที่กล่าวถึงในกรณีของการทำธุรกรรมพร้อมกัน? จะเจาะจงฉันกำลังกำหนดเป้าหมาย PostgreSQL 9.4

3
ใน PostgreSQL มีฟังก์ชั่นรวมที่ปลอดภัยชนิดแรก () หรือไม่?
คำถามแบบเต็มเขียนใหม่ ฉันกำลังมองหาฟังก์ชันการรวมครั้งแรก () ที่นี่ฉันพบบางสิ่งที่เกือบจะได้ผล: CREATE OR REPLACE FUNCTION public.first_agg ( anyelement, anyelement ) RETURNS anyelement LANGUAGE sql IMMUTABLE STRICT AS $$ SELECT $1; $$; -- And then wrap an aggregate around it CREATE AGGREGATE public.first ( sfunc = public.first_agg, basetype = anyelement, stype = anyelement ); ปัญหาคือเมื่อคอลัมน์ varchar (n) ผ่านฟังก์ชั่นแรก …

1
VACUUM ส่งคืนพื้นที่ดิสก์ไปยังระบบปฏิบัติการ
VACUUMมักจะไม่คืนพื้นที่ว่างในดิสก์ไปยังระบบปฏิบัติการยกเว้นในบางกรณีพิเศษ จากเอกสาร: รูปแบบมาตรฐานของการVACUUMลบเวอร์ชันของแถวที่ตายแล้วในตารางและดัชนีและทำเครื่องหมายพื้นที่ที่มีอยู่สำหรับการใช้ซ้ำในอนาคต อย่างไรก็ตามมันจะไม่คืนพื้นที่ไปยังระบบปฏิบัติการยกเว้นในกรณีพิเศษที่หนึ่งหรือหลายหน้าท้ายตารางกลายเป็นอิสระทั้งหมดและสามารถล็อคตารางแบบเอกสิทธิ์ได้อย่างง่ายดาย ในทางตรงกันข้ามVACUUM FULLบีบอัดตารางอย่างแข็งขันด้วยการเขียนไฟล์ตารางเวอร์ชันใหม่ที่สมบูรณ์โดยไม่มีพื้นที่ว่าง สิ่งนี้จะลดขนาดของตาราง แต่จะใช้เวลานาน นอกจากนี้ยังต้องการพื้นที่ดิสก์เพิ่มเติมสำหรับสำเนาใหม่ของตารางจนกว่าการดำเนินการจะเสร็จสมบูรณ์ คำถามคือจะทำอย่างไรเมื่อฐานข้อมูลนี้one or more pages at the end of a table become entirely freeสำเร็จ? สิ่งนี้สามารถทำได้ผ่านVACUUM FULLแต่ฉันมีพื้นที่ไม่เพียงพอที่จะใช้มัน มีความเป็นไปได้อื่นอีกไหม?

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