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

MySQL ทุกรุ่น (ไม่ใช่ Microsoft SQL Server) โปรดเพิ่มแท็กเฉพาะเวอร์ชันเช่น mysql-5.7 หากเกี่ยวข้องกับคำถาม

1
ฉันจะสลับตารางใน MySQL ได้อย่างไร
สมมติว่าฉันมีตารางfooซึ่งมีสถิติบางอย่างที่คำนวณได้ทุกตอนแล้ว มันถูกใช้อย่างหนักโดยการสอบถามอื่น ๆ นั่นเป็นเหตุผลที่ฉันต้องการคำนวณสถิติล่าสุดfoo_newและสลับเมื่อการคำนวณพร้อมใช้งาน ฉันทำได้ ALTER TABLE foo RENAME foo_tmp; ALTER TABLE foo_new RENAME foo; แต่สิ่งที่เกิดขึ้นถ้าการสอบถามความต้องการของตารางfooinbetween ทั้งสองสายเมื่อมีโต๊ะไม่foo? ฉันเดาว่าฉันต้องล็อคมันไว้ ... หรือจะมีวิธีอื่นอีกไหม?

3
เหตุใด InnoDB จึงจัดเก็บฐานข้อมูลทั้งหมดไว้ในไฟล์เดียว
มันสะดวกที่ MyISAM ใช้เก็บแต่ละตารางในไฟล์ที่เกี่ยวข้อง InnoDB มีความก้าวหน้าในหลาย ๆ ด้าน แต่ฉันสงสัยว่าทำไม InnoDB จึงเก็บฐานข้อมูลทั้งหมดไว้ในไฟล์เดียว ( ibdata1โดยค่าเริ่มต้น) ฉันเข้าใจว่า InnoDB จะจับคู่ตำแหน่งของข้อมูลในไฟล์โดยแต่ละไฟล์ดัชนีสำหรับตาราง แต่ฉันไม่เข้าใจว่าทำไมมันจึงรวมข้อมูลทั้งหมดไว้ในไฟล์เดียว และที่สำคัญทำไมผสมข้อมูลของฐานข้อมูลทั้งหมดบนเซิร์ฟเวอร์ คุณลักษณะที่น่าสนใจของ MyISAM คือสามารถคัดลอก / วางโฟลเดอร์ฐานข้อมูลไปยังเครื่องอื่นแล้วใช้ฐานข้อมูล (โดยไม่ต้องถ่ายโอนข้อมูล)

6
ฉันจะสร้างปัญหาฐานข้อมูลต่อลูกค้าหนึ่งรายได้อย่างไร
ผมจำได้จากพอดคาสต์ StackOverflow ว่าหมอกครีกใช้ฐานข้อมูลต่อลูกค้าสำหรับFogbugz ฉันคิดว่านั่นหมายถึงเซิร์ฟเวอร์ Fogbugz On Demand มีฐานข้อมูลนับหมื่น ๆ เราเพิ่งเริ่มพัฒนาเว็บแอปและมีปัญหาคล้ายกันในการแก้ปัญหา (ลูกค้าจำนวนมากที่มีข้อมูลแยกต่างหากของตัวเอง) ฉันควรคาดหวังปัญหาอะไรบ้างเมื่อใช้ฐานข้อมูลต่อลูกค้าหนึ่งราย ฉันจะแก้ปัญหาได้อย่างไร ความคิดเริ่มต้นของฉัน ข้อดีของฐานข้อมูลต่อลูกค้า สคีมาฐานข้อมูลที่ง่ายขึ้น การสำรองข้อมูลที่ง่ายขึ้น - คุณสามารถสำรองข้อมูลลูกค้าแต่ละรายโดยไม่ส่งผลกระทบต่อลูกค้ารายอื่น ทำให้ง่ายต่อการส่งออกข้อมูลลูกค้าที่ระบุ ประสิทธิภาพแคชที่ดีขึ้น - การเขียนลงในหนึ่งในแอ็คทีฟตารางจะมีผลกับลูกค้ารายเดียวที่ดำเนินการเขียนเท่านั้น ง่ายต่อการปรับขนาดข้ามฮาร์ดแวร์ ตัวอย่างเช่นเมื่อเราต้องไปจากเซิร์ฟเวอร์ 1 ถึง 2 เราเพิ่งย้ายลูกค้าของเราครึ่งหนึ่งไปยังเซิร์ฟเวอร์ใหม่ ข้อเสีย MySQL สามารถรับมือกับ 5,000 ฐานข้อมูลได้หรือไม่ ประสิทธิภาพจะแย่ไหม? การเปลี่ยนแปลงสคีมานั้นยากที่จะทำซ้ำในฐานข้อมูลทั้งหมด เราจะต้องมีแผนอัตโนมัติสำหรับสิ่งนี้เช่นการกำหนดเวอร์ชันของสคีมาและสคริปต์ที่เข้าใจวิธีการใช้ฐานข้อมูลจากรุ่นหนึ่งไปยังอีกรุ่นหนึ่ง การทำสิ่งใด ๆ ที่เป็นเรื่องปกติสำหรับลูกค้าของเราทุกคนอาจทำให้เกิดความอึดอัดหรือเป็นไปไม่ได้ คล้ายกับข้างต้น แต่การวิเคราะห์ใด ๆ ที่เราต้องการดำเนินการกับลูกค้าทั้งหมดของเราอาจเป็นไปไม่ได้ เราควรติดตามการใช้งานของลูกค้าทั้งหมดอย่างไร

12
เหตุใดการจับคู่คีย์ / คีย์ต่างประเทศจึงไม่ถูกใช้เพื่อการเข้าร่วม
เท่าที่ฉันสามารถหา DBMSs จำนวนมาก (เช่น mysql, postgres, mssql) ใช้ชุดค่าผสม fk และ pk เพียงเพื่อ จำกัด การเปลี่ยนแปลงข้อมูล แต่ไม่ค่อยมีการใช้วิธีเลือกคอลัมน์เพื่อเข้าร่วมโดยอัตโนมัติ ทำไมถึงเป็นอย่างนั้น? หากคุณกำหนดความสัมพันธ์ระหว่าง 2 ตารางด้วย pk / fk แล้วทำไมฐานข้อมูลไม่สามารถระบุได้ว่าถ้าฉันเข้าร่วมตารางเหล่านั้นฉันต้องการเข้าร่วมในคอลัมน์ pk / fk แก้ไข: เพื่อชี้แจงนี้เล็กน้อย: สมมติว่าฉันมี table1 และ table2 ตารางที่ 1 มีคีย์ต่างประเทศในคอลัมน์ a ซึ่งอ้างอิงถึงคีย์หลักในตารางที่ 2 คอลัมน์ b ตอนนี้ถ้าฉันเข้าร่วมตารางเหล่านี้ฉันจะต้องทำสิ่งนี้: SELECT * FROM table1 JOIN table2 ON table1.a = …
48 mysql  sql-server 

3
เป็นไปได้หรือไม่ที่จะกำหนดรหัสผ่านสำหรับฐานข้อมูลหรือต่อโฮสต์ใน. my.cnf
ฉันมีดังต่อไปนี้ในของฉัน ~/.my.cnf [client] password="somepass" แต่นี่ไม่ใช่รหัสผ่านที่ฉันใช้สำหรับ user @ host / ฐานข้อมูลทุกตัวที่ฉันเชื่อมต่อ มีวิธีในการระบุรหัสผ่านที่แตกต่างกันสำหรับสิ่งที่แตกต่างกันดังนั้นฉันไม่ต้องพิมพ์รหัสผ่านหรือไม่?

5
เหตุใดฐานข้อมูล DROP จึงใช้เวลานานมาก (MySQL)
ใหม่การติดตั้ง CentOS ฉันกำลังเรียกใช้การนำเข้าฐานข้อมูลขนาดใหญ่ (ไฟล์ 2GB sql) และมีปัญหา ไคลเอ็นต์ SSH ดูเหมือนจะสูญเสียการเชื่อมต่อและการนำเข้าดูเหมือนจะหยุดชะงัก ฉันใช้หน้าต่างอื่นเพื่อเข้าสู่ mysql และการนำเข้าดูเหมือนจะตายติดอยู่ในตารางแถว 3M โดยเฉพาะ ดังนั้นฉันจึงพยายาม DROP DATABASE huge_db; 15-20 นาทีต่อมาไม่มีอะไร ในหน้าต่างอื่นฉันทำ: /etc/init.d/mysqld restart หน้าต่าง DROP DB ส่งข้อความ: SERVER SHUTDOWN จากนั้นฉันก็รีสตาร์ทฟิสิคัลเซิร์ฟเวอร์ กลับเข้าสู่ mysql ตรวจสอบและ db ยังคงมีอยู่วิ่ง DROP DATABASE huge_db; อีกครั้งและอีกครั้งฉันรอประมาณ 5 นาที เป็นการติดตั้งใหม่อีกครั้ง huge_dbเป็นฐานข้อมูลเท่านั้น (นอกเหนือจากดีบีเอสระบบ) ฉันสาบานว่าฉันทิ้ง db ของขนาดใหญ่นี้มาก่อนและอย่างรวดเร็ว แต่บางทีฉันผิด ฉันทำฐานข้อมูลสำเร็จแล้ว …
46 mysql  mysqldump 

6
ความหมายของประสิทธิภาพของขนาด MySQL VARCHAR
มีความแตกต่างของประสิทธิภาพใน MySQL ระหว่างขนาด varchar หรือไม่ ยกตัวอย่างเช่นและvarchar(25) varchar(64000)ถ้าไม่มีมีเหตุผลที่จะไม่ประกาศ varchars ทั้งหมดที่มีขนาดสูงสุดเพียงเพื่อให้แน่ใจว่าคุณไม่ได้ออกจากห้อง?

3
ความแตกต่างระหว่าง On Delete Cascade และ On Cascade Update ใน mysql
ฉันมีสองตารางใน MySQL database- ,parent childฉันกำลังพยายามเพิ่มการอ้างอิงคีย์ต่างประเทศในตารางลูกของฉันตามตารางหลัก มีความแตกต่างที่สำคัญระหว่างON UPDATE CASCADEและON DELETE CASCADE ตารางผู้ปกครองของฉัน CREATE TABLE parent ( id INT NOT NULL, PRIMARY KEY (id) ) ENGINE=INNODB; คำถามของฉันคืออะไรความแตกต่างระหว่างการค้นหา sql ต่อไปนี้คืออะไร ON DELETE CASCADE CREATE TABLE child ( id INT, parent_id INT, INDEX par_ind (parent_id), FOREIGN KEY (parent_id) REFERENCES parent(id) ON DELETE CASCADE ) …

3
วิธีการทำให้ชื่อตาราง MySQL กรณีตายใน Ubuntu?
ฉันใช้ Ubuntu 13.10 และ MySQL 5.6 และฉันรู้ว่าชื่อฐานข้อมูลและชื่อตารางเป็นตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ใน Ubuntu (และบางสภาพแวดล้อม * nix) โดยค่าเริ่มต้น ตอนนี้ฉันต้องการให้ MySQL ทำงานเป็นตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ใน Ubuntu เป็นไปได้ไหม? ถ้าใช่ฉันจะทำอย่างไร

3
วิธีการให้สิทธิ์พิเศษแก่ผู้ใช้?
ฉันสร้างผู้ใช้และให้สิทธิ์แก่ผู้ใช้ 1 `grant all privileges on db1.* to user1@'%' with grant option; ฉันกำลังใช้ mysql workbench เพื่อนำเข้าฐานข้อมูลของฉัน ขณะที่อิมพอร์ตดัมพ์ไปยังฐานข้อมูล db1 ข้อผิดพลาดเกิดขึ้นโดยระบุว่า ERROR 1227 (42000) at line 49: Access denied; you need (at least one of) the SUPER privilege(s) for this operation ในที่ทิ้งตารางทั้งหมดจะถูกนำเข้าเรียบร้อยแล้ว แต่เกิดข้อผิดพลาดในขณะที่นำเข้ารูทีนไปยังฐานข้อมูล มีอะไรผิดปกติกับสิทธิพิเศษที่ฉันมอบให้กับผู้ใช้ 1 หรือไม่ โปรดให้คำแนะนำ.

1
ข้อ จำกัด การปรับขนาดของ PostgreSQL และ MySQL
ฉันได้ยินมาว่าประสิทธิภาพของฐานข้อมูลเชิงสัมพันธ์ที่ไม่มีส่วนแบ่งเช่น MySQL หรือ PostgreSQL "แตก" เกินกว่า 10 TB ฉันสงสัยว่าข้อ จำกัด ดังกล่าวมีอยู่เนื่องจากไม่มีใครมากับ Netezza, Greenplum หรือ Vertica ฯลฯ อย่างไรก็ตามฉันอยากจะถามว่าใครที่นี่มีการอ้างอิงถึงรายงานการวิจัยหรือกรณีศึกษาอย่างเป็นทางการที่มีการ จำกัด ปริมาณเหล่านี้หรือไม่

9
มีเครื่องมือเช่น "SQL Server Profiler" ของ Microsoft สำหรับ MySQL หรือไม่? [ปิด]
ในขณะที่พัฒนาบน MySQL ฉันพลาดที่จะสามารถสร้างโปรไฟล์ได้ ฉันพบว่าSQLyogเป็นตัวแทนที่ที่ดีสำหรับ Query Analyzer แต่ไม่พบเครื่องมือที่ทำงานเช่น SQL profiler สำหรับชาว MySQL ที่ไม่ได้เห็นSQL Profilerของ Microsoft นี่เป็นภาพหน้าจอ ที่งานก่อนหน้าของฉันเรามีเครื่องมือที่trumped SQL Profilerและทำให้เรามีร่องรอยสแต็ก ไม่มีใครรู้ว่าเครื่องมือใด ๆ เช่นเดียวกับที่ฉันกล่าวถึงที่ทำงานร่วมกับ MySQL (FYI ฉันสามารถให้ Altiris Profiler ทำงานกับ MySQL ได้ แต่จะเกี่ยวข้องกับการใช้งาน Windows และไม่ใช่ Symantec sku ดังนั้นการออกใบอนุญาตจึงยุ่งยากมาก)
43 mysql  profiler  tools 

2
MySQL: วิธีตรวจสอบกุญแจต่างประเทศที่เกี่ยวข้องกับตาราง
จะเห็นกุญแจต่างประเทศที่เกี่ยวข้องกับตารางใน MySql ได้อย่างไร? แบ็คกราวน์ : ฉันต้องการวางตารางใน MySql ซึ่งมีข้อ จำกัด รหัสต่างประเทศ เมื่อฉันทำฉันได้รับสิ่งนี้: Error Code: 1217. Cannot delete or update a parent row: a foreign key constraint fails ฉันจะวางกุญแจต่างประเทศที่เกี่ยวข้องกับตารางจากผู้อื่นได้อย่างไร

4
แพ็คเกจการสื่อสารเพื่ออ่านข้อผิดพลาดของ MySQL
ในบันทึกข้อผิดพลาด MySQL ฉันเห็นคำเตือนเล็กน้อยเหล่านี้: 120611 16:12:30 [Warning] Aborted connection 2619503 to db: 'db_name' user: 'user_name' host: 'webapp_hostname' (Got an error reading communication packets) ไม่ได้สังเกตเห็นการสูญเสียข้อมูลใด ๆ ต่อฉันดังนั้นฉันสงสัยว่าคำเตือนนี้หมายถึงอะไรหรือสิ่งที่ทำให้มันและถ้าใครอาจแก้ไขปัญหาที่ก่อให้เกิดเหล่านี้ นี่คือ RHEL 6.1 และ MySQL Enterprise 5.5
42 mysql  mysql-5.5 

6
SSD กับ HDD สำหรับฐานข้อมูล
ฉันกำลังพยายามซื้อเซิร์ฟเวอร์ใหม่เพื่อเรียกใช้เซิร์ฟเวอร์ MySQL บน เซิร์ฟเวอร์ใหม่นี้จะเป็นทาสของเครื่องหลักของฉัน อย่างไรก็ตามเซิร์ฟเวอร์นี้จะใช้สำหรับการรายงานเท่านั้น "จำนวนมากอ่านและแบบสอบถามที่ซับซ้อน" ตอนนี้ฉันกำลังมองหาการลงทุนในฮาร์ดไดรฟ์โซลิดสเตต แต่ก็สงสัยว่ามันคุ้มค่าหรือไม่ ความแตกต่างระหว่าง SSD และฮาร์ดไดรฟ์ SATA 7200 อยู่ที่ประมาณ $ 1,500 และ SSD นั้นมีพื้นที่ดิสก์น้อยกว่า ถ้าฉันลงทุนกับ SSD จะเห็นความเร็วได้หรือไม่ ฉันสามารถซื้อ 4 (500GB SATA 7200) ในราคา $ 1,500 น้อยกว่าการซื้อ 2 (500GB SSD) คุณช่วยฉันในการตัดสินใจดูว่ามันคุ้มค่ากับการอัพเกรดหรือไม่? อีกสิ่งที่ฉันอยากจะพูดถึงคือฉันไม่ได้ใช้query_cacheดังนั้นจะมีจำนวนมากอ่านดิสก์ เซิร์ฟเวอร์นี้จะมี RAM 32GB และจะใช้งาน Ubuntu 12.04
42 mysql  ssd 

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