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

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

2
ปิดใช้งานข้อ จำกัด และการตรวจสอบตารางทั้งหมดขณะที่กู้คืนดัมพ์
ฉันได้รับดัมพ์ของฐานข้อมูล PostgreSQL ของฉันด้วย: pg_dump -U user-name -d db-name -f dumpfile ซึ่งฉันแล้วดำเนินการคืนค่าในฐานข้อมูลอื่นด้วย: psql X -U postgres -d db-name-b -f dumpfile ปัญหาของฉันคือฐานข้อมูลมีข้อ จำกัด การอ้างอิงการตรวจสอบและทริกเกอร์และข้อผิดพลาดบางอย่าง (การตรวจสอบโดยเฉพาะอย่างยิ่งดูเหมือนจะเกิดขึ้น) ในระหว่างการกู้คืนเนื่องจากข้อมูลไม่ถูกโหลดตามลำดับที่จะทำให้การตรวจสอบเหล่านั้นได้รับเกียรติ ยกตัวอย่างเช่นการแทรกแถวในตารางอาจจะเกี่ยวข้องกับการCHECKที่เรียกplpgsqlฟังก์ชั่นที่ตรวจสอบไม่ว่าจะเป็นสภาพที่ถือในตารางที่ไม่เกี่ยวข้องอื่น ๆ หากตารางหลังนั้นไม่โหลดpsqlก่อนก่อนจะเกิดข้อผิดพลาด ต่อไปนี้เป็น SSCCE ที่สร้างฐานข้อมูลดังกล่าวซึ่งเมื่อทิ้งด้วยpg_dumpไม่สามารถกู้คืนได้: CREATE OR REPLACE FUNCTION fail_if_b_empty () RETURNS BOOLEAN AS $$ SELECT EXISTS (SELECT 1 FROM b) $$ LANGUAGE SQL; CREATE …

2
วิธีการสร้างลำดับใน mysql
พิจารณาตารางนี้ใน mysql create table numbers (number int); insert into numbers values (3), (2), (9); select * from numbers; +--------+ | number | +--------+ | 3 | | 2 | | 9 | +--------+ มีแบบสอบถามง่ายๆในการสร้างตารางที่มีคอลัมน์ต่อไปนี้ ตัวเลขตั้งแต่ 1 ถึง 10 1 ถ้าหมายเลขอยู่ในหมายเลขตารางและ 0 เป็นอย่างอื่น ฉันเดาว่าคุณต้องสร้างลำดับของตัวเลขเพื่อที่จะทำสิ่งนี้ ถ้าเป็นไปได้ฉันต้องการสร้างลำดับดังกล่าวโดยไม่เก็บไว้ในฐานข้อมูล คำถามที่เกี่ยวข้อง: มีแบบสอบถามแบบใช้เลือกข้อมูลที่สร้างลำดับของตัวเลขตั้งแต่ 1 ถึง 10 (หรือ …
19 mysql  sequence 

2
MySQL แคชแบบสอบถามหรือไม่
ฉันกำลังเชื่อมต่อฐานข้อมูล MySQL กับPHP Data Objects (PDO) และดำเนินการสืบค้น SQL ที่กว้างขวาง โดยปกติจะใช้เวลาประมาณ 1,500 ms; ฉันยังต้องเพิ่มประสิทธิภาพ เมื่อฉันรันสคริปต์ PHP สองครั้งโดยมีช่วงเวลาสั้น ๆ ระหว่างการสืบค้นจะใช้เวลาประมาณ 90 ms เท่านั้น แบบสอบถามอยู่ในทั้งสองกรณีเดียวกัน เมื่อฉันเรียกใช้สคริปต์ด้วยแบบสอบถามเดียวกันหลังจากเวลาอีกครั้งมันใช้เวลา 1500 ms อีกครั้ง ทำไมถึงเป็นอย่างนั้น? แคชฐานข้อมูลอัตโนมัติหรือไม่ มีบางครั้งที่ฐานข้อมูลบันทึกแคชแล้วลบออกโดยอัตโนมัติหรือไม่ ฉันคิดว่าผลลัพธ์ไม่สามารถแคชได้โดย PHP เพราะสิ่งนี้เกิดขึ้นในสองกระทู้ ฉันไม่คิดว่า PHP จะแคชผลลัพธ์เพราะไม่ทราบว่าฐานข้อมูลมีการเปลี่ยนแปลงหรือไม่ ฉันมีสคริปต์ทำงานทุกนาทีเพื่อแทรกแถวใหม่ไปยังฐานข้อมูล นี่อาจเป็นเหตุผลที่ใช้เวลา 1500 ms อีกครั้งหลังจากผ่านไประยะหนึ่ง แคชจะถูกลบเนื่องจากตารางที่เกี่ยวข้องไม่เหมือนเดิมอีกต่อไป
19 mysql 

6
PostgreSQL เปลี่ยนเจ้าของของตารางทั้งหมดภายใต้สคีมาที่เฉพาะเจาะจง
ฉันกำลังพยายามเปลี่ยนเจ้าของตารางทั้งหมดภายใต้สคีเดียวกันในบรรทัดคำสั่งเดียว alter table schema_name.* owner to newownerเช่น: มีวิธีสำเร็จหรือไม่

5
SQL Server 2012: สร้างสคริปต์จากบรรทัดคำสั่ง
ฉันใช้ SQL Server 2012 Studio การจัดการเซิร์ฟเวอร์ SQL มีตัวเลือกให้คลิกขวาบนฐานข้อมูลจากนั้นเลือกงานและสร้างสคริปต์ มีวิธีการที่ทำให้โดยอัตโนมัติผ่านทางบรรทัดคำสั่งอย่างใด? ฉันต้องการสร้างสคริปต์ที่มีสคีมาและข้อมูลของฐานข้อมูลทั้งหมด เครื่องมือที่ชอบScriptDBและsqlpubwiz.exeดูเหมือนจะตั้งเป้าหมาย SQL Server 2005 แล้ว SQL Server 2012 ล่ะ?

5
ตำแหน่งของไฟล์ mdf ของฐานข้อมูล
Projectฉันมีฐานข้อมูล ปัญหาของฉันคือที่ที่ฉันสามารถค้นหา.mdfและ_log.ldfของฐานข้อมูลของฉันเพื่อให้ฉันสามารถถ่ายโอนฐานข้อมูลของฉันไปยังผู้ใช้อื่น ฉันใช้ Microsoft SQL Server 2008 Management Studio ของฉันSsms.exeถูกเก็บไว้ในเส้นทางนี้ C:\Program Files\Microsoft SQL Server\100\Tools\Binn\VSShell\Common7\IDE\Ssms.exe

1
ไวยากรณ์นี้ทำงานอย่างไร {fn CurDate ()} หรือ {fn Now ()} ฯลฯ
เมื่อเร็ว ๆ นี้ฉันได้ดูกระบวนการที่เก็บไว้ค่อนข้างเก่าที่เขียนขึ้นสำหรับ SQL Server 2005 และฉันสังเกตเห็นสิ่งที่ฉันไม่เข้าใจ ดูเหมือนจะเป็นการเรียกใช้ฟังก์ชันบางประเภท ตัวอย่าง: SELECT o.name, o.type_desc, o.create_date FROM sys.objects o WHERE o.create_date < {fn Now()} -1; สิ่งนี้จะแสดงแถวทั้งหมดจากsys.objectsที่มีcreate_dateก่อนหน้า 24 ชั่วโมงที่ผ่านมา ถ้าฉันแสดงแผนการดำเนินการสำหรับแบบสอบถามนี้ฉันเห็นว่า{fn Now()}ถูกแทนที่ด้วยgetdate()โปรแกรมฐานข้อมูล: SELECT [o].[name],[o].[type_desc],[o].[create_date] FROM [sys].[objects] [o] WHERE [o].[create_date]<(getdate()-@1) เห็นได้ชัดว่าใช้อยู่ไกลป้านมากกว่า{fn Now()} GetDate()ฉันหนึ่งจะหลีกเลี่ยงไวยากรณ์นี้เช่นกาฬโรคเพราะมันไม่มีเอกสาร

2
ทำไมแผนต่างกันถ้าแบบสอบถามมีเหตุผลเหมือนกัน?
ฉันเขียนสองฟังก์ชั่นที่จะตอบวันที่ 3 เป็นครั้งแรกที่บ้านของคำถามจากเซเว่นฐานข้อมูลในเจ็ดสัปดาห์ สร้างกระบวนงานที่เก็บไว้ซึ่งคุณสามารถป้อนชื่อภาพยนตร์หรือชื่อของนักแสดงที่คุณชอบและมันจะส่งคืนคำแนะนำห้าอันดับแรกตามภาพยนตร์ที่นักแสดงติดดาวหรือภาพยนตร์ประเภทเดียวกัน ความพยายามครั้งแรกของฉันถูกต้อง แต่ช้า อาจใช้เวลานานถึง 2000 มิลลิวินาทีในการส่งคืนผลลัพธ์ CREATE OR REPLACE FUNCTION suggest_movies(IN query text, IN result_limit integer DEFAULT 5) RETURNS TABLE(movie_id integer, title text) AS $BODY$ WITH suggestions AS ( SELECT actors.name AS entity_term, movies.movie_id AS suggestion_id, movies.title AS suggestion_title, 1 AS rank FROM actors INNER JOIN movies_actors …

5
เหตุใดเซิร์ฟเวอร์ที่เชื่อมโยงจึงมีข้อ จำกัด ถึง 10 สาขาในนิพจน์ CASE
ทำไมCASEการแสดงออกนี้: SELECT CASE column WHEN 'a' THEN '1' WHEN 'b' THEN '2' ... c -> i WHEN 'j' THEN '10' WHEN 'k' THEN '11' END [col] FROM LinkedServer.database.dbo.table สร้างผลลัพธ์นี้หรือไม่ ข้อความแสดงข้อผิดพลาด: ข่าวสารเกี่ยวกับ 8180, ระดับ 16, สถานะ 1, คำสั่ง Line 1 ไม่สามารถจัดเตรียมได้ ข่าวสารเกี่ยวกับ 125, ระดับ 15, สถานะ 4, นิพจน์กรณีบรรทัด 1 อาจซ้อนอยู่ในระดับ 10 …

5
การกำหนดค่าไดรฟ์ที่เหมาะสมที่สุดสำหรับ SQL Server 2008R2
ฉันมีเซิร์ฟเวอร์ฐานข้อมูลค่อนข้างยุ่งใช้ SQL Server 2008 R2 ที่มีการตั้งค่าต่อไปนี้: SATA RAID 1 (2 ไดรฟ์) - ระบบปฏิบัติการ / โปรแกรม SAS RAID 10 (4 ไดรฟ์) - ไฟล์ฐานข้อมูล Sql (ข้อมูลและบันทึก) SAS RAID 1 (2 ไดรฟ์) - TempDB (ข้อมูลและบันทึก) สมมติว่าฉันไม่สามารถเพิ่มไดรฟ์เพิ่มเติมลงในเซิร์ฟเวอร์นี้ได้ฉันได้ใช้ประโยชน์จากการกำหนดค่าที่มีอยู่ให้ดีที่สุดหรือไม่ หรือฉันควรพิจารณาชุดรูปแบบอื่นที่นี่ที่บันทึกจะถูกแยกออกจากไฟล์ข้อมูลเช่น? ปรับปรุง: สำหรับผู้ที่ขอรายละเอียดฮาร์ดแวร์เพิ่มเติม: ไดรฟ์ SATA (ใช้สำหรับพาร์ติชัน OS / Program) คือ: WD 7200 RPM 3 Gb / s …

3
คำสั่ง SQLCMD ไม่สามารถแทรกเครื่องหมายเน้นเสียงได้
ฉันพยายามเรียกใช้sqlcmd.exeเพื่อตั้งค่าฐานข้อมูลใหม่จากบรรทัดคำสั่ง ฉันใช้ SQL SERVER Express 2012 บน Windows 7 64 บิต นี่คือคำสั่งที่ฉันใช้: SQLCMD -S .\MSSQLSERVER08 -V 17 -E -i %~dp0\aqualogyDB.sql -o %~dp0\databaseCreationLog.log และนี่คือสคริปต์สร้างไฟล์ sql: CREATE DATABASE aqualogy COLLATE Modern_Spanish_CI_AS WITH TRUSTWORTHY ON, DB_CHAINING ON; GO use aqualogy GO CREATE TABLE [dbo].[BaseLayers] ( [Code] nchar(100) NOT NULL , [Geometry] nvarchar(MAX) NOT …

3
ตัวระบุที่ไม่ซ้ำกับอักขระพิเศษที่ยังจับคู่ในการเลือก
เรากำลังใช้ SQL Server 2012 ด้วยตัวระบุที่ไม่ซ้ำกันและเราสังเกตว่าเมื่อทำการเลือกด้วยอักขระเพิ่มเติมที่เพิ่มเข้ามาในตอนท้าย (ไม่ใช่ 36 ตัวอักษร) มันยังคงส่งคืนการจับคู่กับ UUID ตัวอย่างเช่น: select * from some_table where uuid = '7DA26ECB-D599-4469-91D4-F9136EC0B4E8' ส่งกลับแถวที่มี 7DA26ECB-D599-4469-91D4-F9136EC0B4E8uuid แต่ถ้าคุณวิ่ง: select * from some_table where uuid = '7DA26ECB-D599-4469-91D4-F9136EC0B4E8EXTRACHARS' ก็ยังส่งกลับแถวที่มี 7DA26ECB-D599-4469-91D4-F9136EC0B4E8uuid SQL Server ดูเหมือนจะไม่สนใจอักขระทั้งหมดที่เกิน 36 เมื่อทำการเลือก นี่เป็นข้อบกพร่อง / คุณสมบัติหรือสิ่งที่สามารถกำหนดค่าได้หรือไม่? มันไม่ได้เป็นปัญหาใหญ่เท่าที่เรามีการตรวจสอบในส่วนหน้าสำหรับความยาว แต่ดูเหมือนว่าพฤติกรรมที่ไม่ถูกต้องสำหรับฉัน

3
PostgreSQL: ฉันสามารถทำ pg_start_backup () บน live ที่รันอยู่ภายใต้โหลดหรือไม่?
การจำลองแบบที่สร้างขึ้นของเราใช้งานไม่ได้ ("ส่วน WAL ที่ร้องขอถูกลบแล้ว" ในช่วงเวลาที่ระบบหยุดทำงาน) เราไม่สามารถหยุดต้นแบบได้อย่างง่ายดายอีกครั้ง เราทำได้ไหม pg_start_backup(), rsync ${PGDATA}/ นายทาส pg_stop_backup() ... ในขณะที่มาสเตอร์ postgresql ยังโหลดเต็มหรือไม่ (หรือจะpg_start_backup()นำไปสู่ ล็อคตาราง บล็อก I / O ไม่สอดคล้องกัน สัญญาณเตือนไฟไหม้ การตอบสนอง db ช้า กล่าวอีกนัยหนึ่งจะpg_start_backup()ส่งผลต่อแอปพลิเคชันของเราหรือไม่


11
วิธีค้นหาฐานข้อมูล MySQL ทั้งหมดสำหรับสตริงที่ต้องการ
เป็นไปได้หรือไม่ที่จะค้นหาตารางฐานข้อมูลทั้งหมด (แถวและคอลัมน์) เพื่อค้นหาสตริงเฉพาะ ฉันมีฐานข้อมูลชื่อ A ที่มีตารางประมาณ 35 ตารางฉันจำเป็นต้องค้นหาสตริงที่ชื่อ "hello" และฉันไม่รู้ว่าบันทึกสตริงนี้ในตารางใดได้หรือไม่ ใช้งาน MySQL ฉันเป็นผู้ดูแลระบบลินุกซ์และฉันไม่คุ้นเคยกับฐานข้อมูลมันจะเป็นประโยชน์จริง ๆ ถ้าคุณสามารถอธิบายแบบสอบถามด้วย
19 mysql 

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