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

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

2
การจำลองแบบสตรีมมิ่งและความล้มเหลวบน PostgreSQL
ฉันกำลังพิสูจน์แนวคิดเกี่ยวกับการจำลองแบบ PostgreSQL หลังจากการอภิปรายในฟอรัมเราตัดสินใจที่จะไปกับการจำลองแบบสตรีมมิ่งเนื่องจากประสิทธิภาพดีเมื่อเทียบกับโซลูชันอื่น ๆ PostgreSQL ไม่ได้ให้การเฟลโอเวอร์อัตโนมัติสำหรับการจำลองแบบการสตรีม เราสามารถเปลี่ยนทาสให้เป็นมาสเตอร์โดยใช้ไฟล์ทริกเกอร์ แต่มันไม่สามารถจัดการได้ ดังนั้นฉันจึงต้องการโซลูชันที่มี failover อัตโนมัติและมีความพร้อมใช้งานสูง มีโซลูชั่นที่แตกต่างกัน: Repmgr Linux Heartbeat Pgpool-II (สำหรับการ failover อัตโนมัติเท่านั้น) เครื่องมืออื่น ๆ ในกรณีที่คุณใช้ คำถามของฉันคือวิธีแก้ปัญหาที่ควรใช้?

4
ฉันควรลงทุนเวลาเปลี่ยนประเภทคอลัมน์จาก CHAR (36) เป็น UUID หรือไม่
ฉันมีไม่กี่ล้านแถวในฐานข้อมูลของฉันแล้ว ฉันไม่รู้เกี่ยวกับชนิดข้อมูล PostgreSQL UUID เมื่อฉันออกแบบสคีมาของฉัน หนึ่งในตารางมีแถว 16M (ประมาณ 3.5M ถึง 4 M ระเบียนต่อชาร์ด) เติบโตที่ประมาณ 500K ระเบียนต่อวัน ฉันยังคงมีความหรูหราในการทำให้ระบบการผลิตหยุดลงหากต้องการ ฉันจะไม่มีความหรูหรานี้ในหนึ่งหรือสองสัปดาห์ คำถามของฉันคือมันจะคุ้มค่าที่จะทำเช่นนั้น? ฉันสงสัยเกี่ยวกับประสิทธิภาพของ JOIN การใช้พื้นที่ดิสก์ (การถ่ายโอนข้อมูลแบบเต็ม gzip คือ 1.25 GiB) สิ่งต่าง ๆ ในลักษณะนั้น สคีมาของตารางคือ: # \d twitter_interactions Table "public.twitter_interactions" Column | Type | Modifiers -------------------------+-----------------------------+----------- interaction_id | character(36) | not null status_text | …
14 postgresql 

1
วิธีโยกย้ายตารางหยดขนาดใหญ่จาก mysql ไปยัง postgresql
ตอนนี้ฉันกำลังย้ายฐานข้อมูล MySQL ไปยัง PostgreSQL เกือบทุกอย่างเป็นไปด้วยดี (ดีหลังจาก googling มากมายสำหรับ mysqldump params และอื่น ๆ ) ยกเว้นตารางเดียวที่ฉันมี - จริง ๆ แล้วเป็นตารางที่สำคัญที่สุดในแอปของฉัน โครงสร้างตารางง่ายมาก: mysql> show create table samples; .. skipped ... CREATE TABLE `samples` ( `File_ID` int(11) NOT NULL, `File` longblob, PRIMARY KEY (`File_ID`) ) ENGINE=InnoDB DEFAULT CHARSET=binary แต่มันมีขนาดใหญ่มาก (> 20 Gb) ฉันพยายามใช้ --hex-blob …

1
สถานะ IDLE หมายถึงอะไรในแถว pg_stat_activity
ใครสามารถแก้ไขข้อสงสัยด้านล่างของฉันpg_stat_activityในแง่ของ postgres 9.5 ได้ไหม บางคนให้ฉันรู้ว่าสิ่งที่state IDLEซึกในแถวของpg_stat_activity? มันเหมือนว่ามันจะตรวจสอบการเชื่อมต่อที่เปิดอยู่ทั้งหมดเพื่อ postgres และหากการเชื่อมต่อไม่ได้ดำเนินการค้นหาใด ๆ แล้วIDLEแสดงว่าแบบสอบถามล่าสุดที่ดำเนินการโดยการเชื่อมต่อ? ในผลลัพธ์ของselect * from pg_stat_activityฉันเห็นแถวด้วยstate IDLEและอายุquery_start_dateมากกว่า 2 วันหรือไม่ สิ่งนี้มีความหมายว่าอะไร? ฉันควรจะต้องกังวลเกี่ยวกับเรื่องนี้? บางคนสามารถแจ้งให้เราทราบได้อย่างไรว่าประชากร pg_stat_activity หากฉันกำลังดำเนินการค้นหาเช่นSelect * from pg_stat_activityจะสร้างรายละเอียดจากสแน็ปช็อตบางส่วนที่ดูแลโดย postgres หรือตรวจสอบการเชื่อมต่อปัจจุบันที่เปิดใน postgres เพื่อให้รายละเอียดหรือไม่
14 postgresql 

1
การค้นหาแถวที่ไม่ใช่ ASCII จาก Postgres
ไม่[:ascii:]ทำงานในระดับ Postgres ที่ทั้งหมดหรือไม่ มันไม่ได้ระบุไว้ในความช่วยเหลือของพวกเขาแต่ฉันเห็นตัวอย่างในเว็บที่ใช้มัน ฉันมีฐานข้อมูล UTF-8 โดยมีการเปรียบเทียบและc_typ e en_US.UTF-8และรุ่น Postgres คือ 9.6.2 เมื่อฉันค้นหาแถวที่ไม่ใช่ ASCII เช่นนี้: select title from wallabag_entry where title ~ '[^[:ascii:]]'; ฉันจะได้รับทั้ง Unicode และไม่ใช่ Unicode สัญลักษณ์ (เอาท์พุทเต็มรูปแบบที่นี่ ): Сталинская правозащитница: мать Меленкова бабушка Настя Дневник НКВДиста Шабалина: Знает ли Москва положение на фронте? Бег по городу и поездка …

2
ดัชนีใดที่จะใช้กับค่าซ้ำจำนวนมาก
ลองทำข้อสมมติสองสามข้อ: ฉันมีตารางที่มีลักษณะดังนี้: a | b ---+--- a | -1 a | 17 ... a | 21 c | 17 c | -3 ... c | 22 ข้อเท็จจริงเกี่ยวกับชุดของฉัน: ขนาดของตารางทั้งหมดคือ ~ 10 10แถว ฉันมีแถว ~ 100k ที่มีค่าaในคอลัมน์aคล้ายกับค่าอื่น ๆ (เช่นc) นั่นหมายถึง ~ 100k ค่าที่แตกต่างในคอลัมน์ 'a' select sum(b) from t where a = 'c'ส่วนใหญ่เป็นคำสั่งของฉันจะอ่านทั้งหมดหรือส่วนใหญ่ของค่าสำหรับค่าที่กำหนดในเช่น …

2
เหตุใด array_agg () จึงช้ากว่าตัวสร้าง ARRAY ที่ไม่ใช่การรวม ()
ฉันเพิ่งตรวจสอบโค้ดเก่าที่เขียนขึ้นสำหรับPre-8.4 PostgreSQLและฉันเห็นสิ่งที่ดีจริงๆ ฉันจำได้ว่ามีฟังก์ชั่นที่กำหนดเองทำสิ่งนี้ย้อนกลับไปในวัน แต่ฉันลืมสิ่งที่array_agg()ดูเหมือนก่อน สำหรับการตรวจสอบการรวมกลุ่มที่ทันสมัยเขียนขึ้นเช่นนี้ SELECT array_agg(x ORDER BY x DESC) FROM foobar; อย่างไรก็ตามกาลครั้งหนึ่งมันถูกเขียนขึ้นเช่นนี้ SELECT ARRAY(SELECT x FROM foobar ORDER BY x DESC); ดังนั้นฉันลองกับข้อมูลทดสอบบางอย่าง .. CREATE TEMP TABLE foobar AS SELECT * FROM generate_series(1,1e7) AS t(x); ผลลัพธ์น่าประหลาดใจวิธี #OldSchoolCool เร็วขึ้นอย่างมาก: เร่งความเร็ว 25% ยิ่งกว่านั้นการทำให้เรียบง่ายขึ้นโดยไม่มีคำสั่งซื้อแสดงความช้าเหมือนกัน # EXPLAIN ANALYZE SELECT ARRAY(SELECT x FROM foobar); …

2
ฟังก์ชั่น PostgreSQL ไม่ได้ดำเนินการเมื่อเรียกจากภายใน CTE
เพียงแค่หวังที่จะยืนยันการสังเกตของฉันและรับคำอธิบายเกี่ยวกับสาเหตุที่เกิดขึ้น ฉันมีฟังก์ชั่นที่กำหนดเป็น: CREATE OR REPLACE FUNCTION "public"."__post_users_id_coin" ("coins" integer, "userid" integer) RETURNS TABLE (id integer) AS ' UPDATE users SET coin = coin + coins WHERE userid = users.id RETURNING users.id' LANGUAGE "sql" COST 100 ROWS 1000 VOLATILE RETURNS NULL ON NULL INPUT SECURITY INVOKER เมื่อฉันเรียกใช้ฟังก์ชันนี้จาก CTE คำสั่งจะเรียกใช้งานคำสั่ง SQL แต่ไม่เรียกใช้ฟังก์ชันตัวอย่างเช่น: …
14 postgresql  cte 

2
PostgreSQL: เครื่องมือ schema diff / patch [ปิด]
ปิด. คำถามนี้เป็นคำถามปิดหัวข้อ ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เป็นหัวข้อสำหรับผู้ดูแลฐานข้อมูล Exchange Exchange ปิดให้บริการใน5 ปีที่ผ่านมา พิจารณาการตั้งค่าต่อไปนี้: ฐานข้อมูลการผลิต dev db ซึ่งมีการเปลี่ยนแปลงสกีมาเพื่อเปิดใช้งานคุณลักษณะใหม่ เมื่อการพัฒนาคุณลักษณะใหม่เสร็จสมบูรณ์ฉันต้องอัพเดต prod db schema ด้วยตนเองจนกว่าpg_dump --schema-onlyทั้งคู่จะเหมือนกัน กระบวนการนี้เกิดข้อผิดพลาดได้ง่ายและน่าเบื่อ ดังนั้นฉันกำลังมองหาเครื่องมือที่สามารถ: แสดงสรุปความแตกต่างระหว่างสอง schema (เช่นdiff) โปรดทราบว่าฉันไม่ได้มองหาส่วนต่างของต้นฉบับเพียงอย่างเดียว แต่เป็นเครื่องมือที่ซับซ้อนยิ่งขึ้นซึ่งสามารถสรุปได้เช่น "ตารางXมีคอลัมน์ใหม่Y" สร้างรหัส SQL ที่จะแปลงหนึ่งสกีมาเป็นอีกแบบอัตโนมัติ (เช่นpatch) มี schema diff / patch tool ที่สามารถช่วยฉันแปลง prod schemas เป็น schemas dev ขั้นสูงหรือไม่

2
อนุสัญญา PostgreSQL Capitalization อย่างเป็นทางการ [ปิด]
ปิด คำถามนี้เป็นคำถามความคิดเห็นตาม ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบข้อเท็จจริงและการอ้างอิงได้โดยแก้ไขโพสต์นี้ ปิดให้บริการใน5 ปีที่ผ่านมา มีการประชุมอย่างเป็นทางการของ PostreSQL เกี่ยวกับการใช้อักษรตัวพิมพ์ใหญ่ในชื่อฐานข้อมูลตารางและฟิลด์หรือไม่? ตัวอย่างบนเว็บไซต์อย่างเป็นทางการขอแนะนำตัวพิมพ์เล็กและ_คำแยกและฉันสงสัยว่านโยบายนี้อย่างเป็นทางการ CREATE TABLE films ( code char(5) CONSTRAINT firstkey PRIMARY KEY, title varchar(40) NOT NULL, did integer NOT NULL, date_prod date, kind varchar(10), len interval hour to minute );

1
เพิ่มประสิทธิภาพการสืบค้นฐานข้อมูลขนาดใหญ่ (25+ ล้านแถวโดยใช้ max () และ GROUP BY)
ฉันใช้ Postgres 9.3.5 และฉันมีตารางขนาดใหญ่ในฐานข้อมูลปัจจุบันมี 25 ล้านแถวและมีแนวโน้มที่จะใหญ่ขึ้นอย่างรวดเร็ว ฉันพยายามเลือกแถวที่เฉพาะเจาะจง (ทุกแถวมีเฉพาะแถวunit_idล่าสุดunit_timestampสำหรับแถวแต่ละแถว) ด้วยข้อความค้นหาง่ายๆเช่น: SELECT unit_id, max(unit_timestamp) AS latest_timestamp FROM all_units GROUP BY unit_id; ไม่มีดัชนีใด ๆ แบบสอบถามนี้ใช้เวลาประมาณ 35 วินาทีในการดำเนินการ ด้วยดัชนีที่กำหนด ( CREATE INDEX partial_idx ON all_units (unit_id, unit_timestamp DESC);) เวลาแบบสอบถามจะสั้นลงเป็นประมาณ (เท่านั้น) 19 วินาที ฉันสงสัยว่าจะเป็นไปได้หรือไม่ที่จะเรียกใช้คิวรีของฉันในเวลาที่น้อยลง (เช่นเพียงไม่กี่วินาที) และถ้าเป็นเช่นนั้นฉันควรทำตามขั้นตอนใดเพื่อปรับให้เหมาะสมยิ่งขึ้นไปอีก การถ่ายโอนข้อมูลโครงสร้างตารางของฉันมีลักษณะเช่นนี้: CREATE TABLE "all_units" ( "unit_id" int4 NOT NULL, …

3
อัพเดตองค์ประกอบ json ในประเภทข้อมูล json
ฉันไม่สามารถคิดได้ว่าฉันจะปรับปรุงองค์ประกอบในประเภทข้อมูล PostgreSQL 9.3 ได้อย่างไร ตัวอย่างของฉัน: CREATE TABLE "user" ( id uuid NOT NULL, password character varying(255), profiles json, gender integer NOT NULL DEFAULT 0, created timestamp with time zone, connected timestamp with time zone, modified timestamp with time zone, active integer NOT NULL DEFAULT 1, settings json, seo character varying(255) …

2
เคียวรีที่มีประสิทธิภาพเพื่อรับค่าสูงสุดต่อกลุ่มจากตารางขนาดใหญ่
รับตาราง: Column | Type id | integer latitude | numeric(9,6) longitude | numeric(9,6) speed | integer equipment_id | integer created_at | timestamp without time zone Indexes: "geoposition_records_pkey" PRIMARY KEY, btree (id) ตารางมี 20 ล้านบันทึกที่ไม่ได้พูดค่อนข้างมาก แต่มันทำให้การสแกนตามลำดับช้าลง ฉันจะได้รับบันทึกสุดท้ายmax(created_at)ของแต่ละรายการได้equipment_idอย่างไร ฉันได้ลองค้นหาทั้งสองข้อต่อไปนี้โดยมีหลายรุ่นที่ฉันได้อ่านจากคำตอบของหัวข้อนี้: select max(created_at),equipment_id from geoposition_records group by equipment_id; select distinct on (equipment_id) equipment_id,created_at from …

4
คิวรีช้าลงบนโต๊ะขนาดใหญ่ที่มี GROUP BY และ ORDER BY
ฉันมีตารางที่มี 7.2 ล้านสิ่งอันดับซึ่งมีลักษณะดังนี้: table public.methods column | type | attributes --------+-----------------------+---------------------------------------------------- id | integer | not null DEFAULT nextval('methodkey'::regclass) hash | character varying(32) | not null string | character varying | not null method | character varying | not null file | character varying | not null type | character …

2
การสร้างแบบจำลองข้อ จำกัด ในมวลรวมย่อย?
ฉันใช้ PostgreSQL แต่ฉันคิดว่าส่วนใหญ่ของฐานข้อมูลบนสุดต้องมีความสามารถที่คล้ายกันและยิ่งไปกว่านั้นโซลูชันสำหรับพวกเขาอาจเป็นแรงบันดาลใจให้ฉันดังนั้นจึงไม่ควรพิจารณาเฉพาะ PostgreSQL นี้ ฉันรู้ว่าฉันไม่ใช่คนแรกที่พยายามแก้ปัญหานี้ดังนั้นฉันคิดว่ามันคุ้มค่าที่จะถามที่นี่ แต่ฉันกำลังพยายามประเมินค่าใช้จ่ายของการสร้างแบบจำลองข้อมูลบัญชีเช่นว่าการทำธุรกรรมทุกครั้งมีความสมดุลทางพื้นฐาน ข้อมูลการบัญชีต่อท้ายเท่านั้น ข้อ จำกัด โดยรวม (เขียนในโค้ดหลอก) ที่นี่อาจมีลักษณะประมาณ: CREATE TABLE journal_entry ( id bigserial not null unique, --artificial candidate key journal_type_id int references journal_type(id), reference text, -- source document identifier, unique per journal date_posted date not null, PRIMARY KEY (journal_type_id, reference) ); CREATE TABLE journal_line …

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