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

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

4
ควรมี mysql innodb_buffer_pool_size ขนาดเท่าใด
ฉันมีฐานข้อมูลไม่ว่างที่มีตาราง InnoDB แต่เพียงผู้เดียวซึ่งมีขนาดประมาณ 5GB ฐานข้อมูลทำงานบนเซิร์ฟเวอร์ Debian โดยใช้ดิสก์ SSD และฉันได้ตั้งค่าการเชื่อมต่อสูงสุด = 800 ซึ่งบางครั้งทำให้อิ่มตัวและบดขยี้เซิร์ฟเวอร์ให้หยุดทำงาน ข้อความค้นหาเฉลี่ยต่อวินาทีประมาณ 2.5K ดังนั้นฉันจำเป็นต้องปรับการใช้หน่วยความจำให้เหมาะสมเพื่อให้มีพื้นที่สำหรับการเชื่อมต่อที่เป็นไปได้สูงสุด ฉันเห็นคำแนะนำแล้วว่า innodb_buffer_pool_size ควรมีขนาดสูงสุด 80% ของหน่วยความจำทั้งหมด ในอีกทางหนึ่งฉันได้รับคำเตือนจากสคริปต์ปรับแต่งไพรเมอร์: Max Memory Ever Allocated : 91.97 G Configured Max Per-thread Buffers : 72.02 G Configured Max Global Buffers : 19.86 G Configured Max Memory Limit : 91.88 G Physical …
170 mysql  innodb 

5
เมื่อใดควรประกาศคีย์หลักที่ไม่ใช่แบบคลัสเตอร์
ในขณะที่สร้างฐานข้อมูลทดสอบสำหรับคำถามอื่นที่ฉันถามไปก่อนหน้านี้ฉันจำเกี่ยวกับคีย์หลักที่สามารถประกาศได้ NONCLUSTERED คุณจะใช้NONCLUSTEREDคีย์หลักตรงข้ามกับCLUSTEREDคีย์หลักเมื่อใด ขอบคุณล่วงหน้า

19
นักพัฒนาควรจะสามารถสืบค้นฐานข้อมูลการผลิตได้หรือไม่
นักพัฒนาควรได้รับอนุญาตให้สืบค้นSELECTฐานข้อมูลการผลิต( / อ่านอย่างเดียว) หรือไม่? สถานที่ก่อนหน้านี้ที่ฉันทำงานทีมพัฒนามีdb_datareaderบทบาท; ที่ฉันทำงานอยู่ตอนนี้ทีมพัฒนาไม่สามารถเชื่อมต่อกับอินสแตนซ์การผลิตได้ หนึ่งในอินสแตนซ์ทดสอบคือสำเนาของการผลิตที่คืนค่าจากการสำรองการผลิตสัปดาห์ละครั้งดังนั้นจึงไม่มีปัญหาใด ๆ กับนักพัฒนาที่เห็นข้อมูลจริง มีเหตุผลที่ดีอะไรบ้างที่ไม่อนุญาตให้นักพัฒนาทำการสืบค้นการผลิต (ยกเว้นเพียงแค่ไม่ต้องการให้พวกเขาเข้าถึงการอ่านข้อมูลที่ละเอียดอ่อน)?

4
ช่วยในการติดตั้ง SQL Server 2017 - การติดตั้ง VS Shell ล้มเหลวด้วยรหัสออก 1638
คำแนะนำใด ๆ เกี่ยวกับวิธีจัดการกับข้อผิดพลาดนี้: TITLE: Microsoft SQL Server 2017 Setup ------------------------------ The following error has occurred: VS Shell installation has failed with exit code 1638. For help, click: https://go.microsoft.com/fwlink?LinkID=20476&ProdName=Microsoft%20SQL%20Server&EvtSrc=setup.rll&EvtID=50000&ProdVer=14.0.1000.169&EvtType=0x5B39C8B9%25401434%25403 ------------------------------ BUTTONS: OK ------------------------------ นี่คือแล็ปท็อปเครื่องใหม่ที่ใช้งาน SQL Server 2016 express Visual Studio 2017 SSMS 2017 ฉันพยายามถอนการติดตั้งสิ่งใด ๆ ที่เกี่ยวข้องกับ SQL Server หรือ Visual Studio …

5
ให้สิทธิ์การเข้าถึงตารางทั้งหมดสำหรับผู้ใช้
ฉันใหม่สำหรับ Postgres และพยายามย้ายฐานข้อมูล MySQL ของเราไป ใน MySQL ฉันสามารถให้สิทธิ์SELECT, UPDATE, INSERTและDELETEสิทธิพิเศษในการใช้สิทธิพิเศษต่ำและเปิดใช้ทุนเหล่านั้นเพื่อนำไปใช้กับตารางทั้งหมดในฐานข้อมูลที่ระบุ ฉันต้องหายไปบางอย่างใน Postgres เพราะดูเหมือนว่าฉันต้องให้สิทธิ์เหล่านั้นสำหรับแต่ละตารางทีละครั้ง ด้วยฐานข้อมูลจำนวนมากและหลายร้อยตารางต่อฐานข้อมูลที่ดูเหมือนว่าเป็นงานที่น่ากลัวเพียงเพื่อออกจากพื้นดิน นอกจากนี้เมื่อฐานข้อมูลทำงานอยู่การเพิ่มตารางเกิดขึ้นบ่อยครั้งพอที่ฉันไม่ต้องการให้สิทธิ์ในแต่ละครั้งเว้นแต่จะจำเป็นจริงๆ สิ่งนี้สำเร็จได้ดีที่สุดอย่างไร

7
รายการสิทธิ์ของฐานข้อมูลโดยใช้ psql
ฉันอยู่ระหว่างการย้ายเซิร์ฟเวอร์ฐานข้อมูลและฉันไม่สามารถคิด (หลังจากค้นหาและค้นหาที่นี่) ฉันจะแสดงรายการสิทธิ์การใช้ฐานข้อมูล (หรือสิทธิ์ทั้งหมดบนเซิร์ฟเวอร์) บน PostgreSQL โดยใช้psqlเครื่องมือบรรทัดคำสั่งได้อย่างไร ฉันใช้ Ubuntu 11.04 และรุ่น PostgreSQL ของฉันคือ 8.2.x

2
สร้างฐานข้อมูล MySQL ด้วย charset UTF-8
ฉันใหม่กับ MySQL และฉันต้องการที่จะรู้ว่า: ฉันจะสร้างฐานข้อมูลด้วยชุดอักขระutf-8เช่นเดียวกับที่ฉันทำใน navicat ได้อย่างไร create mydatabase; ... ดูเหมือนว่าจะใช้ชุดอักขระเริ่มต้นบางประเภท
142 mysql  collation  utf-8 

13
ฉันจะย้ายฐานข้อมูลจากเซิร์ฟเวอร์หนึ่งไปยังเซิร์ฟเวอร์อื่นได้อย่างไร
ฉันจะย้ายตาราง MySQL จากเซิร์ฟเวอร์จริงหนึ่งไปยังอีกเซิร์ฟเวอร์หนึ่งได้อย่างไร เช่นสถานการณ์ที่แน่นอน: ฉันมีเซิร์ฟเวอร์ MySQL ที่ใช้ตาราง innodb และมีขนาดประมาณ 20GB ฉันต้องการย้ายไปยังเซิร์ฟเวอร์ใหม่วิธีที่มีประสิทธิภาพที่สุดในการทำเช่นนี้คืออะไร

5
เป็นไปได้ไหมที่ทำให้ MySQL ใช้มากกว่าหนึ่งคอร์?
ฉันได้รับการนำเสนอด้วยเซิร์ฟเวอร์ MySQL เฉพาะที่ไม่เคยใช้มากกว่าหนึ่งคอร์ ฉันเป็นนักพัฒนามากกว่า DBA สำหรับ MySQL ดังนั้นต้องการความช่วยเหลือ ติดตั้ง เซิร์ฟเวอร์ค่อนข้างหนักด้วยการโหลดประเภท OLAP / DataWarehouse (DW): หลัก: 96GB RAM, 8 คอร์ + RAID 10 อาเรย์เดียว ทดสอบ: RAM 32GB พร้อม 4 คอร์ ฐานข้อมูลที่ใหญ่ที่สุดคือ 540 GB, รวมอยู่ที่ประมาณ 1.1TB และส่วนใหญ่เป็นตาราง InnoDB Solaris 10 Intel-64 MySQL 5.5.x หมายเหตุ: ฐานข้อมูลที่ใหญ่ที่สุดคือหนึ่งที่จำลองแบบจากเซิร์ฟเวอร์ OLTP DR และ DW จะถูกโหลดจากสิ่งนี้ มันไม่ใช่ DW …


8
ทำไมเราไม่อนุญาตให้ NULL
ฉันจำได้ว่าอ่านบทความนี้เกี่ยวกับการออกแบบฐานข้อมูลและฉันยังจำได้ว่าคุณควรมีคุณสมบัติเขตข้อมูลของ NOT NULL ฉันจำไม่ได้ว่าทำไมถึงเป็นเช่นนั้น สิ่งที่ฉันคิดได้ก็คือในฐานะนักพัฒนาแอปพลิเคชันคุณไม่ต้องทดสอบค่า NULL และค่าข้อมูลที่ไม่มีอยู่ (ตัวอย่างเช่นสตริงว่างสำหรับสตริง) แต่คุณจะทำอย่างไรในกรณีของวันที่วันที่และเวลา (SQL Server 2008) คุณต้องใช้วันที่ในประวัติศาสตร์หรือจุดต่ำสุด ความคิดใด ๆ เกี่ยวกับเรื่องนี้?

12
ควรจัดเก็บไฟล์ไบนารีในฐานข้อมูลหรือไม่
ตำแหน่งที่ดีที่สุดสำหรับการจัดเก็บไฟล์ไบนารีที่เกี่ยวข้องกับข้อมูลในฐานข้อมูลของคุณคืออะไร? คุณควร: เก็บในฐานข้อมูลด้วย blob เก็บในระบบไฟล์พร้อมลิงค์ในฐานข้อมูล เก็บในระบบไฟล์ แต่เปลี่ยนชื่อเป็นแฮชของเนื้อหาและจัดเก็บแฮชบนฐานข้อมูล บางสิ่งที่ฉันไม่ได้คิด ข้อดีของ (1) คือ (ในหมู่อื่น ๆ ) ที่มีการเก็บรักษาปรมาณูของการทำธุรกรรม ค่าใช้จ่ายคือคุณอาจเพิ่มความต้องการในการจัดเก็บ (และการสตรีม / สำรองข้อมูลที่เกี่ยวข้อง) เป็นอย่างมาก เป้าหมายของ (3) คือการรักษาอะตอมมิกให้อยู่ในระดับหนึ่ง - หากคุณสามารถบังคับใช้ว่าระบบไฟล์ที่คุณเขียนไม่อนุญาตให้เปลี่ยนหรือลบไฟล์และมีแฮชที่ถูกต้องเป็นชื่อไฟล์เสมอ ความคิดที่จะเขียนไฟล์ไปยังระบบไฟล์ก่อนที่จะอนุญาตให้มีการแทรก / อัปเดตอ้างอิงแฮ - ถ้าการทำธุรกรรมนี้ล้มเหลวหลังจากระบบไฟล์เขียน แต่ก่อน DML ฐานข้อมูลนั่นเป็นเรื่องดีเพราะระบบไฟล์ 'แกล้ง' เป็นที่เก็บของทั้งหมด ไฟล์และแฮชที่เป็นไปได้ - มันไม่สำคัญว่าจะมีไฟล์บางไฟล์ในนั้นที่ไม่ได้ชี้ไปที่ (และคุณสามารถล้างมันเป็นระยะถ้าคุณระวัง) แก้ไข: ดูเหมือนว่า RDBMS บางส่วนจะมีสิ่งนี้ครอบคลุมในแบบของตัวเอง - ฉันสนใจที่จะรู้ว่าคนอื่นทำได้อย่างไร - และโดยเฉพาะอย่างยิ่งในการแก้ปัญหาสำหรับ postgres

13
ฉันจะค้นหาไดเรกทอรีข้อมูลของ PostgreSQL ได้อย่างไร
ฉันลืมวิธีที่ฉันเริ่ม PostgreSQL ครั้งล่าสุด (เป็นเดือนที่ผ่านมา) และฉันจำไม่ได้ว่าไดเรกทอรีข้อมูลตั้งอยู่ที่ใด postgresคำสั่งดูเหมือนว่าจะต้องสถานที่ตั้งของไดเรกทอรีข้อมูล ฉันใช้ MacOsX ถ้าช่วยได้ /usr/local/postgres ไม่มีอยู่ใน Mac ของฉัน จากการใช้คำตอบที่ให้ไว้ด้านล่างฉันพบว่ามันอยู่ที่นี่: /usr/local/var/postgres

4
เหตุใดตารางตัวเลขจึงประเมินค่าไม่ได้?
ผู้เชี่ยวชาญฐานข้อมูลถิ่นที่อยู่ของเรากำลังบอกเราว่าตารางตัวเลขมีค่ามาก ฉันไม่เข้าใจว่าทำไม นี่คือตารางตัวเลข: USE Model GO CREATE TABLE Numbers ( Number INT NOT NULL, CONSTRAINT PK_Numbers PRIMARY KEY CLUSTERED (Number) WITH FILLFACTOR = 100 ) INSERT INTO Numbers SELECT (a.Number * 256) + b.Number AS Number FROM ( SELECT number FROM master..spt_values WHERE type = 'P' AND number <= 255 …
112 sql-server 

3
ข้อดีและข้อเสียในการใช้ประเภท Enum กับจำนวนเต็ม?
ช่วยให้พูดในตารางสุ่มบางท่านมีชื่อคอลัมน์สถานะ มันเป็นค่าที่แท้จริงของโลกจะได้รับการอย่างใดอย่างหนึ่งที่เปิดใช้งานหรือปิดการใช้งาน มันจะดีกว่าสำหรับชนิดข้อมูลของคอลัมน์นี้จะเป็น int / บูล (1 หรือศูนย์) หรือจะใช้ENUMกับค่าที่เป็นenabledและdisabled? ข้อดีหรือข้อเสียคืออะไร? สมมุติว่าแทนที่จะเป็นเพียงสองสถานะที่ถูกต้องคุณมี 4 หรือ 10 หรือมากกว่านั้น ข้อดีและข้อเสียจะแกว่งไปด้านใดด้านหนึ่งหรือไม่เมื่อจำนวนค่าที่ต้องการเพิ่มขึ้น?

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