ผู้ดูแลฐานข้อมูล

ถามตอบสำหรับผู้เชี่ยวชาญด้านฐานข้อมูลที่ต้องการพัฒนาทักษะฐานข้อมูลและเรียนรู้จากผู้อื่นในชุมชน

1
มีทางเลือก "สร้างหรือแทนที่ขั้นตอน" ใน MySQL หรือไม่
มีรุ่น "สร้างหรือแทนที่โพรซีเดอร์" สำหรับ MySQL หรือไม่ ฉันไม่สามารถทำเช่นนี้หรือสคริปต์การวางขั้นตอนหากมีอยู่ก่อนที่จะคอมไพล์ใหม่โดยไม่ได้รับข้อความแสดงข้อผิดพลาดว่ามีขั้นตอนการจัดเก็บอยู่ DELIMITER $$ -- would love to be able to drop procedure if exists db.sp_tmp_90days; -- or use "create or replace" create procedure db.sp_tmp_90days() BEGIN drop table db.tmp_90days; create table db.tmp_90days ( user_name varchar(128), first_name varchar(50), last_name varchar(50), system varchar(10), last_login datetime ); alter table …

2
ค่าคอลัมน์ที่ว่างเปล่าใช้พื้นที่เก็บข้อมูลเดียวกันกับค่าคอลัมน์ที่เต็มไปหรือไม่?
ฉันมีตารางที่มี 2 คอลัมน์ varchar(38)ประเภทของคอลัมน์ทั้งมีการตั้งค่า ถ้าฉันสร้างแถวที่มีค่าว่างสำหรับคอลัมน์ใดคอลัมน์หนึ่งจะใช้พื้นที่เก็บข้อมูลเดียวกันหรือไม่ถ้าค่านั้นไม่ว่างเปล่า? กล่าวอีกนัยหนึ่ง MySQL จะจองพื้นที่เก็บข้อมูลสำหรับคอลัมน์ (ขึ้นอยู่กับประเภท) เมื่อสร้างแถวหรือไม่

2
วิธีเพิ่มความเร็วในการเลือกที่แตกต่างกันอย่างไร
ฉันมีตัวเลือกแบบง่าย ๆ ในข้อมูลอนุกรมเวลา: SELECT DISTINCT user_id FROM events WHERE project_id = 6 AND time > '2015-01-11 8:00:00' AND time < '2015-02-10 8:00:00'; และใช้เวลา 112 วินาที นี่คือแผนแบบสอบถาม: http://explain.depesz.com/s/NTyA แอปพลิเคชันของฉันต้อง preform การดำเนินการที่แตกต่างกันมากมายและนับเช่นนี้ มีวิธีที่เร็วกว่าในการรับข้อมูลประเภทนี้หรือไม่

1
การกู้คืนฐานข้อมูล Postgres: pg_restore -vs- เพียงแค่ใช้ psql
ฉันกำลังทิ้งฐานข้อมูล Postgres ของฉันโดยใช้pg_dump (ในรูปแบบข้อความล้วน) แล้วกู้คืนได้อย่างง่ายดายโดยใช้psql (พร้อม-fตัวเลือก) คำถามใดที่ฉันถามว่า: ฉันหายไปโดยไม่ใช้pg_restoreซึ่งดูเหมือนว่าเป็นเครื่องมือกู้คืนแบบพิเศษ (เทียบกับทั่วไปpsql)? ฉันสามารถควบคุมตัวเลือกต่าง ๆ เช่นการปิดใช้งานทริกเกอร์และเช่นนั้นโดยใช้pg_dumpพารามิเตอร์ ถ้าเช่นนั้นจะpg_restoreใช้ทำอะไร รูปแบบการถ่ายโอนข้อมูลที่ไม่ใช่ข้อความธรรมดา?

2
PostgreSQL เข้าร่วมโดยใช้ JSONB
ฉันมี SQL นี้: CREATE TABLE test(id SERIAL PRIMARY KEY, data JSONB); INSERT INTO test(data) VALUES ('{"parent":null,"children":[2,3]}'), ('{"parent":1, "children":[4,5]}'), ('{"parent":1, "children":[]}'), ('{"parent":2, "children":[]}'), ('{"parent":2, "children":[]}'); ที่จะให้: id | data ----+-------------------------------------- 1 | {"parent": null, "children": [2, 3]} 2 | {"parent": 1, "children": [4, 5]} 3 | {"parent": 1, "children": []} 4 …

1
เครื่องมือควบคุมเวอร์ชันสำหรับ postgreSQL [ปิด]
ปิด. คำถามนี้เป็นคำถามปิดหัวข้อ ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัพเดตคำถามเพื่อให้เป็นไปตามหัวข้อสำหรับ Exchange Administrators Stack Exchange ปิดให้บริการใน5 ปีที่ผ่านมา ทุกคนสามารถแนะนำเครื่องมือควบคุมเวอร์ชันที่ใช้ windows สำหรับ PostgreSQL ขอขอบคุณและขอแสดงความนับถือ GP

5
ความสัมพันธ์ที่แน่นอนระหว่างธุรกรรมฐานข้อมูลและการล็อกคืออะไร
นี่เป็นคำถามถ่อมใจที่ถามในวิญญาณของการเพิ่มความรู้ของฉัน; กรุณาอ่อนโยนในการตอบสนองของคุณ ในฐานะนักพัฒนาแอปพลิเคชั่นที่ใช้เวลานานฉันรู้ในระดับหนึ่งว่าธุรกรรมคืออะไร (ฉันใช้พวกเขาตลอดเวลา) ออกจากระดับการแยกธุรกรรมในขณะนี้ในระดับสูงธุรกรรมอนุญาตให้บล็อกการทำงานเสร็จสมบูรณ์ทั้งหมดหรือไม่เลยและอนุญาตให้มีการแยกจำนวนหนึ่งจากกิจกรรมการแก้ไขฐานข้อมูลอื่น ๆ ฉันยังรู้ว่า (ในฐานข้อมูลต่าง ๆ ) คืออะไรล็อคหรืออย่างน้อยหนึ่งวิธีการทำงาน (ถ้าฉันล็อคตารางในบางวิธีอย่างชัดเจนแล้วไม่มีกระบวนการหรือด้ายอื่น ๆ สามารถปรับปรุงอะไรเกี่ยวกับตารางที่) สิ่งที่ฉันมากที่สุดอย่างเห็นได้ชัดไม่ชัดเจนเกี่ยวกับการเป็นในฐานข้อมูลต่างๆเมื่อฉันอย่างชัดเจนล็อคแถวหรือตารางฉันกำลังจ้างโครงสร้างเดียวกันที่ใช้โดยฐานข้อมูลของสิ่งอำนวยความสะดวกการทำธุรกรรมภายใต้ครอบคลุมเพื่อให้การทำงานการทำธุรกรรมที่ถูกต้องหรือไม่ นั่นคือมันเกิดขึ้นกับฉันว่าเพื่อให้การทำธุรกรรมเป็นปรมาณูและโดดเดี่ยวนั้นจะต้องมีการล็อค การล็อคทรานแซคชั่นซ่อนเร้นจากทรานแซคชันนี้เป็นการล็อกแบบเดียวกับที่ฐานข้อมูลต่างๆให้ฉันเข้าถึงผ่านการสร้างเช่นSELECT FOR UPDATEหรือLOCKคำสั่งที่ชัดเจน? หรือแนวคิดทั้งสองนี้แตกต่างอย่างสิ้นเชิง? อีกครั้งฉันขอโทษสำหรับnaïvetéของคำถามนี้ ฉันมีความสุขที่จะชี้ไปที่แหล่งข้อมูลพื้นฐานเพิ่มเติม

1
การตั้งค่าการอนุญาตของผู้ใช้สำหรับสคีมา SQL Server ต่างๆ
ฉันจำเป็นต้อง จำกัด การเข้าถึงผู้ใช้เฉพาะ แต่พวกเขายังต้องสามารถดูข้อมูลในตารางที่ dbo เป็นเจ้าของได้ ฉันกำลังพยายามทำสิ่งต่อไปนี้: ฟังก์ชั่น dbo schema ตามปกติจะสามารถเข้าถึงทุกสิ่ง schema1 schema มีการเข้าถึงวัตถุ schema1 เท่านั้น ถ้ามุมมอง schema1 หรือกระบวนงานที่เก็บไว้เข้าถึงข้อมูลในตารางที่ dbo เป็นเจ้าของห่วงโซ่การอนุญาตอย่างเหมาะสม user1 มีสิทธิ์เข้าถึง schema1 และไม่มีอะไรอื่นอีก ยกเว้นในกรณีของ # 3 นี่คือสิ่งที่ฉันได้ลอง: สร้างผู้ใช้ user1 ที่แมปกับการเข้าสู่ระบบทดสอบด้วยรหัสผ่านแบบสุ่ม สร้างตารางคู่ใน dbo schema ด้วยข้อมูลการทดสอบบางอย่าง สร้างสคีมา 1 สร้าง schema1.get_profiles ที่เลือกจากมุมมองที่เรียกว่า schema1.profiles ซึ่งเข้าถึงข้อมูลใน dbo.people, dbo.taglinks และ dbo.tags อย่างไรก็ตามการใช้คำสั่งต่อไปนี้ในขณะที่เข้าสู่ระบบในฐานะผู้ใช้ 1: EXEC …

3
วิธีรับรายการบัญชีที่ถูกล็อค / ตรวจสอบบัญชีนั้นถูกล็อคอย่างไร
ฉันสามารถใช้คำสั่งต่อไปนี้เพื่อปลดล็อคบัญชี: ALTER USER username ACCOUNT UNLOCK แต่ฉันสามารถใช้คำสั่งใดเพื่อยืนยันว่าบัญชีถูกล็อคอยู่ในขณะนี้?
16 oracle 


7
ขั้นตอนการจัดเก็บภายใต้การควบคุมแหล่งที่มาแนวปฏิบัติที่ดีที่สุด
ฉันกำลังใช้ Tortoise SVN เพื่อควบคุมแหล่งโปรแกรมประยุกต์บนเว็บ NET อะไรจะเป็นวิธีที่ดีที่สุดในการนำ SQL Server ของเรามาใช้ในการควบคุมกระบวนการ ขณะนี้ฉันใช้ VS 2010 เป็นสภาพแวดล้อมการพัฒนาของฉันและเชื่อมต่อกับฐานข้อมูล SQL Server 2008 R2 นอกสถานที่โดยใช้ SQL Server Data Tools (SSDT) สิ่งที่ฉันทำในอดีตคือการบันทึก procs เป็นไฟล์. sql และทำให้ไฟล์นี้อยู่ภายใต้การควบคุมของแหล่งที่มา ฉันแน่ใจว่าต้องมีวิธีที่มีประสิทธิภาพมากกว่านี้หรือไม่ มีส่วนขยายที่ฉันสามารถติดตั้งบน VS2010, SSDT หรือแม้แต่ SQL Server บนเครื่องที่ใช้งานจริงได้หรือไม่?

3
ฉันสามารถดึงวัตถุฐานข้อมูลทั้งหมดที่ผู้ใช้นั้นเป็นเจ้าของได้หรือไม่
เรามีผู้ใช้ที่กำลังออกจากและฉันจำเป็นต้องรู้ทุกวัตถุฐานข้อมูลที่เขาเป็นเจ้าของ มีแบบสอบถามที่จะให้ข้อมูลนี้หรือไม่?

3
ประโยชน์ของการใช้บูลีนมากกว่า TINYINT (1) คืออะไร
จากคู่มือ MySQL บอกว่า: บูลบูลลีน ประเภทเหล่านี้เป็นคำพ้องความหมายสำหรับ TINYINT (1) ค่าศูนย์ถือเป็นเท็จ ค่าที่ไม่ใช่ศูนย์ถือว่าเป็นจริง: ฉันสร้างคอลัมน์บูลีนด้วย0เป็นค่าเริ่มต้น 2แล้วฉันจะปรับปรุงค่าไป ฉันคาดหวังว่า MySQL จะยอมรับอย่างใดอย่างหนึ่ง0หรือ1เพราะมันเป็นบูลีน อย่างไรก็ตาม MySQL ไม่ได้มีข้อผิดพลาดหรือป้องกันไม่ให้ฉันทำการอัปเดต หากบูลีนทำงานเหมือนกับ TINYINT (1) ทุกอย่างจะสร้างความแตกต่างไม่ว่าฉันจะใช้ TINYINT (1) หรือบูลีนหรือไม่?
16 mysql  datatypes 

2
การส่งคืนชุดผลลัพธ์ที่มีหลายแถวตามวันที่สูงสุด
ฉันมีตารางเด็กที่เป็นเช่นนี้: [ตารางวันที่ Cust] | Customer ID | Some Date | Balance | +-------------+------------+---------+ | 1 | 2012-04-30 | 20.00 | | 1 | 2012-03-31 | 50.00 | | 2 | 2012-04-30 | 0.00 | | 2 | 2012-03-31 | 10.00 | | 3 | 2012-03-31 | 60.00 | | 3 …
16 sql-server 

1
ความแตกต่างระหว่างสารเติมเต็มตารางและสารเติมดัชนี
ใน Postgres หนึ่งสามารถตั้งค่า fillfactor สำหรับดัชนีเช่นเดียวกับตาราง อะไรคือความแตกต่าง? วิธีการตัดสินใจค่าสำหรับทั้ง อะไรคือสิ่งที่ usecases? ฉันกำลังพยายามจัดกลุ่มความสัมพันธ์เชิงพื้นที่กับดัชนีเชิงพื้นที่ มันมีสองสามล้านบันทึก ระเบียนจะอัปเดตตลอดเวลาแม้ว่าจะมีการสร้างใหม่น้อยมากทุกวัน กรณีการใช้งานเป็นแบบสอบถามช่วงเชิงพื้นที่ สิ่งที่จะเป็นค่าที่ดีสำหรับสารตัวเติมตารางและ / หรือสารตัวเติมดัชนี
16 postgresql 

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