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

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

4
แก้ไข DEFINER ในหลาย ๆ มุมมอง
ฉันมีปัญหาในการสำรองฐานข้อมูลของฉันหลังจากการอัพเดต ฉันแหย่ระบบของฉันพยายามหาสาเหตุ ฉันค้นหาหนึ่งรายการส่งคืนผลลัพธ์นี้ Got error: 1449: The user specified as a definer ('cittool'@'%') does not exist when using LOCK TABLES หลังจากการตรวจสอบบางอย่างปรากฏว่าตัวระบุสำหรับมุมมองเหล่านี้เป็นบัญชีนักพัฒนาซอฟต์แวร์เก่าที่ถูกลบออกจากระบบ ฐานข้อมูลและมุมมองที่มีปัญหานี้มีการใช้งานไม่บ่อยนักและส่วนใหญ่ถูกเก็บไว้เพื่อการเก็บถาวร มีประมาณ 40 มุมมองที่มีตัวกำหนดที่ไม่มีอยู่อีกต่อไป มีวิธีง่ายๆในการเปลี่ยนผู้กำหนดเป็นบัญชีที่แตกต่างกันในทุกสิ่งในครั้งเดียวหรือไม่? มีวิธีรับ mysqldump เพียงแค่ถ่ายโอนมุมมองทั้งหมดออกไปยังไฟล์ดังนั้นฉันสามารถแก้ไขไฟล์นั้นและสร้างมุมมองใหม่ได้หรือไม่
25 mysql  view 

3
ขนาดไฟล์หน้าที่แนะนำสำหรับ SQL 2008R2 บน Windows 2008R2
บทความของ Microsoft นี้ - วิธีการกำหนดขนาดหน้าแฟ้มที่เหมาะสมสำหรับ Windows Server 2008 และ Windows 2008 R2รุ่น 64 บิตให้คำแนะนำสำหรับการคำนวณขนาดหน้าไฟล์สำหรับ 64 บิต Windows 2008 และ Windows 2008R2 ไม่ต้องสงสัยเลยว่าทำงานได้ดีสำหรับเซิร์ฟเวอร์ที่ใช้งานทั่วไป ฉันสงสัยว่าคำแนะนำสำหรับ SQL Server 2008R2 ที่ทำงานบน Windows 2008 / R2 64 บิตคืออะไร ฉันคิดว่าเราต้องการข้อมูลหน่วยความจำเพียงเล็กน้อยในการกดปุ่มไฟล์หน้ามิฉะนั้น SQL อาจกดดิสก์สองครั้งเพื่อหาข้อมูล SQL Server อนุญาตให้ข้อมูลในหน่วยความจำตีไฟล์หน้าได้หรือไม่ ฉันได้รับคำแนะนำจากSQL Server 2008 R2 Books Online แล้วแต่ยังไม่พบการใช้ไฟล์หน้าใด ๆ นี่คือสถานการณ์การใช้งานที่อาจเกิดขึ้น: เมื่อกำหนดเซิร์ฟเวอร์จริงที่มี RAM …

3
การใช้ตารางการค้นหาอย่างเหมาะสม
ฉันมีปัญหาในการหาวิธีวางขอบเขตที่ดีสำหรับเวลาและสถานที่ที่จะใช้ตารางการค้นหาในฐานข้อมูล แหล่งข้อมูลส่วนใหญ่ที่ฉันดูแล้วบอกว่าฉันไม่สามารถมีได้มากเกินไป แต่ในบางจุดดูเหมือนว่าฐานข้อมูลจะถูกแบ่งออกเป็นหลาย ๆ ส่วนในขณะที่อาจมีประสิทธิภาพ แต่ก็ไม่สามารถจัดการได้อีกต่อไป นี่คือตัวอย่างของสิ่งที่ฉันทำงานด้วย: สมมติว่าฉันมีตารางชื่อพนักงาน: ID LName FName Gender Position 1 Doe John Male Manager 2 Doe Jane Female Sales 3 Smith John Male Sales ทำท่าครู่หนึ่งว่าข้อมูลมีความซับซ้อนมากขึ้นและมีหลายร้อยแถว สิ่งที่ชัดเจนที่สุดที่ฉันเห็นว่าสามารถย้ายไปที่ตารางการค้นหาจะเป็นตำแหน่ง ฉันสามารถสร้างตารางที่เรียกว่าตำแหน่งและติดกุญแจต่างประเทศจากตารางตำแหน่งลงในตารางพนักงานในคอลัมน์ตำแหน่ง ID Position 1 Manager 2 Sales แต่ฉันจะแยกข้อมูลออกเป็นตารางการค้นหาขนาดเล็กลงต่อไปได้อีกนานเท่าใดจึงจะไม่สามารถจัดการได้ ฉันสามารถสร้างตารางเพศและมี 1 สอดคล้องกับเพศชายและ 2 สอดคล้องกับเพศหญิงในตารางการค้นหาแยกต่างหาก ฉันสามารถใส่ LNames และ FNames ลงในตารางได้ รายการ "John" …

8
เครื่องมือในการสร้างชุดข้อมูลขนาดใหญ่ของข้อมูลการทดสอบ [ปิด]
ปิด. คำถามนี้เป็นคำถามปิดหัวข้อ ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัพเดตคำถามเพื่อให้เป็นไปตามหัวข้อสำหรับ Exchange Administrators Stack Exchange ปิดให้บริการใน5 ปีที่ผ่านมา ล็อคแล้ว คำถามและคำตอบนี้ถูกล็อคเนื่องจากคำถามอยู่นอกหัวข้อ แต่มีความสำคัญทางประวัติศาสตร์ ขณะนี้ไม่ยอมรับคำตอบหรือการโต้ตอบใหม่ หลายครั้งเมื่อพยายามออกแบบฐานข้อมูลที่มีประสิทธิภาพแนวทางการปฏิบัติที่ดีที่สุดคือการสร้างฐานข้อมูลตัวอย่างสองแห่งเติมข้อมูลและเรียกใช้แบบสอบถามกับฐานข้อมูลเพื่อดูว่าฐานข้อมูลใดมีประสิทธิภาพดีกว่า มีเครื่องมือที่จะสร้าง (ตรงไปยังฐานข้อมูล) ชุดข้อมูลทดสอบขนาดใหญ่ (~ 10,000 รายการ) อย่างรวดเร็วหรือไม่? ฉันกำลังมองหาบางอย่างที่ใช้งานได้กับ MySQL อย่างน้อย

6
วิธีเพิ่ม sysadmin ให้กับผู้ใช้ใน SQL Server 2008 เมื่อไม่มีบัญชี sysadmin
คำถามนี้ถูกโยกย้ายจาก Stack Overflow เพราะสามารถตอบได้ใน Exchange Administrators Stack Exchange อพยพ 7 ปีที่ผ่านมา ฉันมีอินสแตนซ์ของ SQL Server 2008 ทำงานอยู่ น่าเสียดายในระหว่างการทดสอบฉันยกเลิกการเลือกสิทธิ์ดูแลระบบสำหรับการเข้าสู่ระบบของฉันและตอนนี้ไม่สามารถอ่านได้ (เพราะฉันไม่มีสิทธิ์ดูแลระบบ) ไม่มีบัญชีดูแลระบบอื่น ๆ สำหรับอินสแตนซ์ยกเว้น SA ฉันถูกตั้งค่าสำหรับการพิสูจน์ตัวจริงของ Windows ดังนั้นฉันจึงแฮ็ค LoginMode ในรีจิสตรีถึง 2 ดังนั้นฉันจึงสามารถเข้าสู่ระบบในฐานะ SA โดยใช้การพิสูจน์ตัวตนของ Sql นี่เป็นการตั้งค่าโหมดล็อกอินเป็นแบบผสมอย่างไรก็ตามผู้ใช้ SA ถูกปิดใช้งานโดยค่าเริ่มต้นและฉันไม่สามารถเปิดใช้งานได้อีกครั้งเพราะฉันไม่มีสิทธิ์ดูแลระบบ ฉันจะเปิดใช้งานการเข้าสู่ระบบ SA เพื่อให้ฉันสามารถเข้าสู่ระบบและโอนสิทธิดูแลระบบไปยังบัญชีปกติของฉันได้อย่างไร มีการตั้งค่ารีจิสทรีสำหรับสิ่งนี้ด้วยหรือเก็บไว้ในฐานข้อมูลหลักหรือไม่

3
ฉันควรเลือกชุดเปรียบเทียบใดสำหรับเว็บไซต์ภาษา muiti
การเปรียบเทียบมีผลกับความเร็วการสืบค้นหรือไม่? ขนาดของตารางเปลี่ยนไปตามการเปรียบเทียบหรือไม่? หากฉันต้องการสร้างเว็บไซต์ที่ต้องรองรับภาษาที่เป็นไปได้ทั้งหมด (ลองทำเช่น Google) ซึ่งจะเป็นการเปรียบเทียบที่แนะนำหรือไม่ ฉันจะต้องเก็บตัวอักษรเช่น日本語การค้นหาของฉันในเว็บไซต์จะต้องส่งคืนsomethingค่าsóméthíngอินพุตนั้นจะต้องตรงตามตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ ฉันจะรู้ได้อย่างไรว่าทางเลือกใดที่ดีที่สุด? การเปรียบเทียบชุดไหนที่เหมาะกับกรณีนี้มากที่สุด

3
ฉันจะยกเลิกคำขอล็อคแอพใน SQL Server ได้อย่างไร
กระบวนการsp_getapplock ที่เก็บไว้มีค่าส่งคืนต่อไปนี้: 0: การล็อกได้รับการอนุญาตให้สำเร็จพร้อมกัน 1: อนุญาตให้ล็อกสำเร็จหลังจากรอการล็อกอื่นที่เข้ากันไม่ได้ -1: คำขอล็อกหมดเวลา -2: คำขอล็อคถูกยกเลิก -3: คำขอล็อคถูกเลือกให้เป็นเหยื่อการหยุดชะงัก -999: ระบุการตรวจสอบความถูกต้องของพารามิเตอร์หรือข้อผิดพลาดการโทรอื่น ๆ ฉันกำลังเขียน wrapper สำหรับการโทรsp_getapplockใน data access layer ของเราและฉันต้องการทราบว่าภายใต้สถานการณ์ใด -2 ซึ่งสามารถส่งคืนได้เพื่อที่ฉันจะสามารถโยนข้อยกเว้นเชิงอธิบายและเป็นประโยชน์ เห็นได้ชัดว่าค่าส่งคืนของ -1 และ -3 หมายถึงอะไรและฉันสามารถสร้างเงื่อนไขการทดสอบที่ทำให้ค่าเหล่านั้นถูกส่งคืนได้อย่างง่ายดาย ฉันจะจัดการเพื่อรับค่าตอบแทนเป็น -2 ได้อย่างไร

1
วิธีการเรียกคืนพื้นที่ดิสก์บน PostgreSQL
คำถามนี้ถูกโยกย้ายจาก Stack Overflow เพราะสามารถตอบได้ใน Exchange Administrators Stack Exchange อพยพ 5 ปีที่ผ่านมา ฉันมีการติดตั้งฐานข้อมูลท้องถิ่น 9.1 กับตารางน้อยซึ่งมี cca บันทึก 300 mio และฐานข้อมูลเพิ่มขึ้นเป็นประมาณ 20 GB หลังจากนั้นฉันออกdelete fromคำสั่งให้ลบระเบียนทั้งหมดจากมัน (ฉันควรจะใช้truncateแต่ฉันก็ไม่รู้) ดังนั้นฉันจึงสูญญากาศเต็มในฐานข้อมูลของฉันเพื่อเรียกคืนพื้นที่ดิสก์ แต่ก็ไม่ได้ช่วย ปัญหาของฉันดูเหมือนกับปัญหานี้แต่ไม่มีวิธีแก้ไข ฉันได้ตรวจสอบเธรดและเอกสารนี้แล้วใน"การกู้คืนพื้นที่ว่างในดิสก์"แต่ยังหาวิธีแก้ปัญหาไม่ได้ ฉันใช้รหัสนี้เพื่อรับขนาดของตารางทั้งหมด SELECT nspname || '.' || relname AS "relation", pg_size_pretty(pg_total_relation_size(C.oid)) AS "total_size" FROM pg_class C LEFT JOIN pg_namespace N ON (N.oid = …

2
LC_CTYPE มีผลกระทบอะไรกับฐานข้อมูล PostgreSQL
ดังนั้นฉันมีเซิร์ฟเวอร์ Debian ไม่กี่เครื่องที่มี PostgreSQL อยู่ ในอดีตเซิร์ฟเวอร์เหล่านั้นและ PostgreSQL มีการแปลเป็นภาษาละตินด้วยชุดอักขระ Latin 9 และย้อนกลับไปได้ ตอนนี้เราต้องจัดการกับสิ่งต่างๆเช่นโปแลนด์กรีกหรือจีนดังนั้นการเปลี่ยนมันจึงกลายเป็นปัญหาที่กำลังเติบโต เมื่อฉันพยายามสร้างฐานข้อมูล UTF8 ฉันได้รับข้อความ: ข้อผิดพลาด: การเข้ารหัส UTF8 ไม่ตรงกับรายละเอียดสถานที่ fr_FR: การตั้งค่า LC_CTYPE ที่เลือกต้องใช้การเข้ารหัส LATIN9 ไม่กี่ครั้งที่ฉันได้ทำการวิจัยเกี่ยวกับเรื่องนี้กับเพื่อนเก่าของ Google และสิ่งที่ฉันพบคือขั้นตอนที่ซับซ้อนเช่นการอัปเดต Debian LANG, คอมไพล์ PostgreSQL ด้วยชุดอักขระที่ถูกต้องแก้ไขLC_ตัวแปรระบบทั้งหมดและโซลูชันที่ไม่ชัดเจนอื่น ๆ ดังนั้นในขณะนี้เราจึงปล่อยให้ปัญหานี้เกิดขึ้น เมื่อเร็ว ๆ นี้มันกลับมาอีกครั้งชาวกรีกต้องการสิ่งของและละติน 9 ไม่ต้องการ และในขณะที่ฉันกำลังตรวจสอบปัญหานี้อีกครั้งเพื่อนร่วมงานคนหนึ่งมาหาฉันและพูดว่า "ไม่นะมันง่ายดูสิ" เขาไม่ได้ทำการแก้ไขอะไรเลยไม่ได้ใช้กลอุบายเขาแค่ทำแบบสอบถาม SQL นี้: CREATE DATABASE my_utf8_db WITH ENCODING='UTF8' OWNER=admin …

2
เวิร์กโฟลว์ DDL ของทรานแซคชันสำหรับ MySQL
ฉันเป็นเพียงเล็กน้อยประหลาดใจที่จะพบว่างบ DDL ( alter table, create indexฯลฯ ) โดยปริยายกระทำการทำธุรกรรมในปัจจุบันใน MySQL มาจาก MS SQL Server ความสามารถในการปรับเปลี่ยนฐานข้อมูลในการทำธุรกรรมภายใน (ที่ถูกย้อนกลับ) เป็นส่วนสำคัญของเวิร์กโฟลว์ของฉัน สำหรับการรวมอย่างต่อเนื่องการย้อนกลับถูกใช้ถ้าการโยกย้าย hiccuped ด้วยเหตุผลใด ๆ ดังนั้นอย่างน้อยเราก็ไม่ได้ออกจากฐานข้อมูลในสถานะครึ่งย้าย ผู้คนแก้ไขปัญหาทั้งสองนี้อย่างไรเมื่อใช้ MySQL กับการย้ายข้อมูลและการรวมอย่างต่อเนื่อง

4
ล็อกการถ่ายทอด MySQL เสียหายฉันจะแก้ไขได้อย่างไร พยายาม แต่ล้มเหลว
รีเลย์ MySQL v5.1.61 เสียหายเมื่อเครื่องปิดตัวลงกะทันหัน ฉันพยายามแก้ไข แต่มันใช้งานไม่ได้ - ฉันจะแก้ไขได้อย่างไร ฉันทำอะไรผิดหรือเปล่า? เท่าที่ฉันได้อ่านล็อกรีเลย์ MySQL เสียหายได้อย่างง่ายดายแก้ไข: change master to master_log_file='<Relay_Master_Log_File>', master_log_pos=<Exec_Master_Log_Pos>; ที่ไหนRelay_Master_Log_FileและExec_Master_Log_Posมีการระบุไว้โดย: mysql> show slave status; อย่างไรก็ตามเมื่อฉันทำchange master status ...ฉันได้รับข้อผิดพลาดการละเมิดคีย์หลัก เป็นไปได้อย่างไร? ขั้นตอนข้างต้นไม่ถูกต้องหรือมี +1 บางส่วนหายไปหรือไม่ (สำหรับตอนนี้ฉันเพิ่งนำเข้า mysqldump -master-data อีกครั้งจากต้นแบบไปยังทาสและสิ่งนี้แก้ปัญหาได้อย่างไรก็ตามในอนาคตการทำเช่นนั้นอาจไม่เหมาะสม) ต่อไปนี้เป็นรายละเอียดเกี่ยวกับปัญหาเฉพาะของฉัน: mysql> show slave status \G *************************** 1. row *************************** Slave_IO_State: Waiting for master to send …

2
แก้ไขตารางตรวจสอบข้อ จำกัด
จาก Object Explorer ใน SQL Server เมื่อเลือกและเขียนสคริปต์ข้อ จำกัด foreign-key รหัสต่อไปนี้จะถูกสร้างขึ้น USE [MyTestDatabase] GO ALTER TABLE [dbo].[T2] WITH NOCHECK ADD CONSTRAINT [FK_T2_T1] FOREIGN KEY([T1ID]) REFERENCES [dbo].[T1] ([T1ID]) GO ALTER TABLE [dbo].[T2] CHECK CONSTRAINT [FK_T2_T1] GO อะไรคือวัตถุประสงค์ของคำแถลงล่าสุด "การเปลี่ยนแปลงตารางตรวจสอบข้อ จำกัด "? ดูเหมือนจะไม่สำคัญว่าจะรันหรือไม่ จะไม่ล้มเหลวกับข้อมูลที่ไม่ดีที่มีอยู่และไม่เปลี่ยนแปลงว่าข้อ จำกัด จะถูกบังคับใช้กับข้อมูลใหม่ ขอบคุณ!

3
คีย์ธรรมชาติให้ประสิทธิภาพที่สูงขึ้นหรือต่ำลงใน SQL Server มากกว่าปุ่มจำนวนเต็มตัวแทน?
ฉันเป็นแฟนของกุญแจตัวแทน มีความเสี่ยงที่การค้นพบของฉันจะยืนยันลำเอียง คำถามมากมายที่ฉันเห็นทั้งที่นี่และที่http://stackoverflow.comใช้คีย์ธรรมชาติแทนคีย์ตัวแทนโดยยึดตามIDENTITY()ค่า พื้นหลังของฉันในระบบคอมพิวเตอร์บอกให้ฉันดำเนินการเปรียบเทียบใด ๆ กับจำนวนเต็มจะเร็วกว่าการเปรียบเทียบสตริง ความคิดเห็นนี้ทำให้ฉันถามความเชื่อของฉันดังนั้นฉันคิดว่าฉันจะสร้างระบบเพื่อตรวจสอบวิทยานิพนธ์ของฉันว่าจำนวนเต็มเร็วกว่าสตริงเพื่อใช้เป็นกุญแจใน SQL Server เนื่องจากมีความแตกต่างที่สังเกตได้น้อยมากในชุดข้อมูลขนาดเล็กฉันจึงนึกถึงการตั้งค่าตารางสองตารางทันทีที่ตารางหลักมี 1,000,000 แถวและตารางรองมี 10 แถวสำหรับแต่ละแถวในตารางหลักรวม 10,000,000 แถวใน ตารางที่สอง ข้อสมมติฐานของการทดสอบของฉันคือการสร้างตารางสองชุดเช่นนี้ชุดหนึ่งใช้คีย์ธรรมชาติและอีกชุดหนึ่งใช้คีย์จำนวนเต็มและเรียกใช้การทดสอบกำหนดเวลากับคำถามง่ายๆเช่น: SELECT * FROM Table1 INNER JOIN Table2 ON Table1.Key = Table2.Key; ต่อไปนี้เป็นรหัสที่ฉันสร้างเป็นเตียงทดสอบ: USE Master; IF (SELECT COUNT(database_id) FROM sys.databases d WHERE d.name = 'NaturalKeyTest') = 1 BEGIN ALTER DATABASE NaturalKeyTest SET SINGLE_USER …

4
จะสร้างตารางแยกต่างหากสำหรับผลิตภัณฑ์ประเภทต่างๆหรือไม่?
ฉันกำลังออกแบบฐานข้อมูลและฉันมีความคิดที่สองเกี่ยวกับการตัดสินใจออกแบบเริ่มต้นของฉัน ... ประเภทสินค้ามีดังนี้ ... รุ่นชิ้นส่วนชุดอุปกรณ์ทดแทนและตัวเลือก ตัวเลือก A (การออกแบบครั้งแรก): ฉันวางแผนที่จะมีตารางแยกต่างหากสำหรับผลิตภัณฑ์ประเภทข้างต้น ฉันจะบอกว่าประมาณ 75% ของเขตข้อมูลจะเหมือนกันในแต่ละตาราง ฉันสร้างผลิตภัณฑ์แต่ละประเภทเป็นตารางแยกเนื่องจากความสัมพันธ์ที่ฉันต้องการสร้างระหว่างแต่ละประเภท ตัวอย่างเช่นรุ่นสามารถมีตัวเลือกมากมายและตัวเลือกสามารถมีหลายรุ่น ตัวเลือกยังสามารถมีได้หลายส่วนและส่วนหนึ่งสามารถมีตัวเลือกมากมาย ... และอื่น ๆ ... ตัวเลือก B: แทนที่จะมีตารางแยกกันฉันสามารถสร้างตารางชื่อผลิตภัณฑ์ที่ครอบคลุมโมเดลส่วนชิ้นส่วนชุดอุปกรณ์ทดแทนและตัวเลือกต่างๆ ฉันสามารถมีหนึ่งฟิลด์ที่เรียกว่าชนิดเพื่อแยกความแตกต่างระหว่างรุ่นตัวเลือกและอื่น ๆ ฉันคิดว่าข้อเสียคือหลาย ๆ ฟิลด์จะไม่ถูกใช้ (ซ้ายเป็นโมฆะ) สำหรับผลิตภัณฑ์บางประเภท ฉันเดาว่านี่คือสิ่งที่ "ไม่ปฏิบัติที่ดีที่สุด" จะเข้ามาเล่น .. ตัวเลือก B จะช่วยลดความซับซ้อนของการออกแบบฐานข้อมูลได้อย่างมาก ฉันไม่ต้องกังวลเกี่ยวกับการอ้างอิงกลุ่มของตารางเมื่อดึงข้อมูลออกมาเพื่อสอบถาม ...

4
จะค้นหาคำสั่ง SQL ล่าสุดในฐานข้อมูลได้อย่างไร?
ฉันต้องการรับงบที่ดำเนินการล่าสุดในฐานข้อมูลของฉันพร้อมกับตัวบ่งชี้ประสิทธิภาพ ฉันชอบที่จะรู้ว่าคำสั่ง SQL ใดที่ใช้ CPU / DISK มากที่สุด

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