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

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

2
ตรวจสอบกิจกรรม MySQL ต่อฐานข้อมูลหรือไม่
วิธีที่ดีที่สุดในการตรวจสอบกิจกรรมในฐานข้อมูลแต่ละเซิร์ฟเวอร์ของฉันคืออะไร ฉันลอง mtop / mytop ซึ่งแสดงกิจกรรมแบบเรียลไทม์ แต่ก็ไม่ค่อยมีประโยชน์ในการดูข้อความค้นหาทั้งหมดที่ดำเนินการ ฉันเปิดใช้งานบันทึก MySQL แต่ไม่มีตัวเลือกที่จะแยกพวกเขาต่อฐานข้อมูล คุณใช้เครื่องมืออะไรในการตรวจสอบเซิร์ฟเวอร์ MySQL

3
เอาท์พุทอธิบายให้เห็นว่าดัชนีของฉันไม่ได้ถูกใช้
ฉันได้ตั้งค่าตารางของฉันด้วยดัชนีเฉพาะบน done_status (done_status = INT): เมื่อฉันใช้: EXPLAIN SELECT * FROM reminder WHERE done_status=2 ฉันได้รับมันกลับมา: id select_type ชนิดของตารางที่เป็นไปได้คีย์คีย์ key_len แถวอ้างอิงพิเศษ 1 ตัวเตือนที่เรียบง่าย ALL done_status NULL NULL NULL 5 การใช้ตำแหน่ง แต่เมื่อฉันออกคำสั่งนี้: EXPLAIN SELECT * FROM reminder WHERE done_status=1 ฉันได้รับผลตอบแทนดังต่อไปนี้: id select_type ชนิดของตารางที่เป็นไปได้คีย์คีย์ key_len แถวอ้างอิงพิเศษ 1 การแจ้งเตือนที่เรียบง่ายอ้างอิงจากเสร็จ _status done_status 4 const 2 มันEXPLAINแสดงให้ฉันเห็นว่ามันใช้ …
9 mysql 

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

4
ฉันควรถามอะไรในการสัมภาษณ์ MySQL DBA
ฉันเป็นนักพัฒนาซอฟต์แวร์และช่วยให้ทีมของฉันจ้าง MySQL DBA ความท้าทายหลักที่เราเผชิญคือ: คิวรีและประสิทธิภาพที่ช้าลงเนื่องจากไฮเบอร์เนต การจัดการฐานข้อมูล (สำรอง, ปรับแต่ง, แก้ไข, ความปลอดภัย) ความสามารถในการปรับขนาดเนื่องจากการเพิ่มขึ้นของข้อมูลจากแหล่งข้อมูลใหม่และการสะสมของข้อมูลเก่า เราวางแผนที่จะเริ่มการขุดข้อมูลและคลังข้อมูลในอนาคต ไม่แน่ใจว่าเป็นอย่างไร เรามักจะมีกรณีการเขียนโปรแกรมที่เราขอให้นักพัฒนาสร้างบางอย่างสำหรับการสัมภาษณ์ แต่มันก็ยากที่จะทำการสัมภาษณ์ DBA ในแบบเดียวกัน คุณสามารถให้คำแนะนำเกี่ยวกับวิธีการสัมภาษณ์ได้หรือไม่?

2
นี่เป็นชุดสิทธิ์ MySQL ปกติหรือไม่
การใช้ phpmyadmin ในการตั้งค่าการทดสอบในเครื่องและมีชื่อผู้ใช้ 3 คนที่ทำเครื่องหมายว่าเป็นผู้ใช้ = ANY, รหัสผ่าน = NO เช่น: USER | HOST | Password | Global Priv | Grant -----+---------+----------+-------------+------ Any | % | No | USAGE | No Any | Local | No | USAGE | No Any | Domain | No | USAGE | No -----+---------+----------+-------------+------ …

3
MySQL ประสิทธิภาพสูงสำหรับการเลือกจำนวนมาก / INSERTs / UPDATEs / DELETEs
ฉันกำลังสร้างโมดูลที่ผู้ใช้ทุกคนมักจะได้รับการบันทึกลงในตารางเป็นเวลา 10 ถึง 300 วินาที เมื่อเวลาหมดอายุบันทึกจะถูกลบ กรณีคือ: จะมีผู้ใช้จำนวนมากและเรคคอร์ดจะเปลี่ยนแปลงบ่อยมาก - สิ่งนี้จะส่งผลต่อประสิทธิภาพของแอปพลิเคชั่นสำหรับตารางนี้อย่างไรเพราะเรคคอร์ดจะเปลี่ยนบ่อยมากและฉันสงสัยว่า mysql ดีกับมันหรือไม่? เช่นเดียวกับดัชนีที่จะมาและไปข้อมูลจะเปลี่ยนไปเช่น 200 ครั้ง / วินาทีสำหรับตารางนี้ บางทีฉันอาจเลือกวิธีที่ไม่ดีสำหรับงานประเภทนี้ ข้อเสนอแนะใด ๆ ขอบคุณ!

3
ผู้ใช้บ่นว่าระบบทำงานช้าเมื่อ mysqldump อยู่ในระหว่างดำเนินการ
ฐานข้อมูล MYSQL (ibdata1) มีขนาด 73 GB และถูกกำหนดค่าให้ทำงานเป็นเซิร์ฟเวอร์ฐานข้อมูลเฉพาะบน Windows 2008 O / S สำหรับตาราง INNODB เรากำลังสำรองข้อมูลโดยใช้ mysqldump mysqldump --skip-opt --quick - transaction -create-options --extended-insert --disable-keys --add-drop-table - complete-insert - set-charset - การบีบอัด --log-error = Proddb0635.err -u root -pjohndoe Proddb> \ devNas \ devNas \ sqNbackup \ LIVE \ db \ Proddb0635.sql …

1
ประโยชน์ของการเรียกใช้ OPTIMIZE TABLE Query ใน MySQL DB Server
ฉันอยากจะรู้ว่าอะไรคือประโยชน์ [การปฏิบัติจริง ๆ ] ที่สามารถอ่านได้อีกครั้งโดยการเรียกใช้OPTIMIZE TABLE tbl_nameแบบสอบถามใน MySQL Server ฉันตรวจสอบสิ่งนี้ครั้งเดียวและพบว่าหลังจากที่เรียกใช้แล้วการเข้าใช้ฐานข้อมูลครั้งต่อไปอาจใช้เวลานานอาจเนื่องมาจากการย้ายชิ้นส่วนหรือมากกว่านั้น แต่การเข้าชมครั้งต่อมาแสดงประสิทธิภาพเป็นอย่างมากฉันไม่แน่ใจว่า ด้วยการเพิ่มประสิทธิภาพหรือการเพิ่มประสิทธิภาพเพียงอย่างเดียวทำเคล็ดลับนี้ ผู้ใดสามารถชี้แนะฉันด้วยค่าความแตกต่างของประสิทธิภาพที่แท้จริงถ้าเป็นไปได้เพื่อที่ฉันจะได้สามารถทำงานต่อไปได้มากขึ้นเมื่อทำงานกับ MySQL กำลังได้รับแรงโน้มถ่วงในโครงการของเรา

3
แบบสอบถามเกี่ยวกับการรวมการปรับปรุงและการแทรกแบบสอบถามลงในแบบสอบถามเดียวใน mysql
ฉันต้องการติดตามประวัติของการเปลี่ยนแปลงสำหรับผู้ใช้ดังนั้นเมื่อใดก็ตามที่เขาเปลี่ยนโปรไฟล์ของฉันฉันจำเป็นต้องใช้ข้อมูลเก่าและเก็บไว้ในประวัติและอัปเดตด้วยข้อมูลใหม่ ฉันสามารถใช้selectเพื่อรับข้อมูลเก่าinsertประวัติและในที่สุดก็updateเปลี่ยนข้อมูล ฉันสามารถมีทั้งหมดเหล่านี้ในแบบสอบถามเดียวใน mysql โดยไม่ต้องใช้วิธีการเก็บทริกเกอร์ ฯลฯ .. เช่นใช้ล็อค ฯลฯ ถ้าให้ฉันตัวอย่างเล็ก ๆ
9 mysql 

3
ฉันใช้เครื่องมือเก็บข้อมูล MEMORY แต่ MySQL ยังคงเขียนลงในดิสก์ของฉัน…ทำไม
ฉันใช้MEMORY Engineสำหรับตารางทั้งหมดที่เกี่ยวข้องกับแบบสอบถาม MYSQL เฉพาะเนื่องจากความเร็วในการเข้าถึงเป็นสิ่งสำคัญยิ่งสำหรับโครงการของฉัน ด้วยเหตุผลบางอย่างฉันสังเกตว่าการเขียนดิสก์จำนวนมากยังคงเกิดขึ้น เป็นเพราะ Windows สลับแรมกับดิสก์หรือไม่ ฉันจะป้องกันไม่ให้เกิดเหตุการณ์เช่นนี้ได้อย่างไร แก้ไข: นี่คือตัวแปรทั่วโลกของฉัน: mysql> show global variables; +---------------------------------------------------+-------------------------------------------------------------------------------- ------------------------------+ | Variable_name | Value | +---------------------------------------------------+-------------------------------------------------------------------------------- ------------------------------+ | auto_increment_increment | 1 | | auto_increment_offset | 1 | | autocommit | ON | | automatic_sp_privileges | ON | | back_log | 50 | | …

4
ฉันจะเพิ่มประสิทธิภาพการสืบค้น MySQL นี้เพิ่มเติมได้อย่างไร
ฉันมีคำถามที่ใช้เวลานานในการรัน (15+ วินาที) และยิ่งแย่ลงเมื่อเวลาผ่านไปเมื่อชุดข้อมูลของฉันเติบโต ฉันเคยปรับปรุงสิ่งนี้ในอดีตและได้เพิ่มดัชนีการเรียงลำดับระดับโค้ดและการเพิ่มประสิทธิภาพอื่น ๆ แต่ก็ต้องมีการปรับแต่งเพิ่มเติม SELECT sounds.*, avg(ratings.rating) AS avg_rating, count(ratings.rating) AS votes FROM `sounds` INNER JOIN ratings ON sounds.id = ratings.rateable_id WHERE (ratings.rateable_type = 'Sound' AND sounds.blacklisted = false AND sounds.ready_for_deployment = true AND sounds.deployed = true AND sounds.type = "Sound" AND sounds.created_at > "2011-03-26 21:25:49") GROUP …

4
ทำไม MySQL ถึงบอกว่าฉันไม่มีความจำ
ฉันพยายามรันINSERT...SELECTMySQL ที่มีขนาดค่อนข้างใหญ่ด้วย JDBC และฉันได้รับข้อยกเว้นต่อไปนี้: Exception in thread "main" java.sql.SQLException: Out of memory (Needed 1073741824 bytes) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1073) เนื่องจากฉันไม่ได้ส่งคืนออบเจกต์ ResultSet ฉันจึงคิดว่าพื้นที่ของฮีป Java ไม่น่าจะมีปัญหา อย่างไรก็ตามฉันพยายามเพิ่มมันต่อไปและมันก็ไม่ได้ดี จากนั้นฉันพยายามเรียกใช้คำสั่งใน MySQL Workbench และฉันได้สิ่งเดียวกัน: Error Code 5: Out of memory (Needed 1073741816 bytes) ฉันควรมี RAM มากมายเพื่อให้การดำเนินการเหล่านี้ (เพียงพอที่จะพอดีกับตารางทั้งหมดที่ฉันเลือกจาก) แต่ฉันเดาว่ามีการตั้งค่าต่าง ๆ ที่ฉันจำเป็นต้องปรับแต่งเพื่อใช้ประโยชน์จากหน่วยความจำทั้งหมดของฉัน ฉันใช้หน่วยความจำสูง Amazon EC2 หน่วยความจำเสริมใหญ่เป็นสองเท่าด้วย Windows Server 2008 …

4
จะปรับปรุงประสิทธิภาพของ InnoDB DELETE ได้อย่างไร
ดังนั้นฉันมีตารางการตรวจสอบนี้ (ติดตามการดำเนินการในตารางใด ๆ ในฐานข้อมูลของฉัน): CREATE TABLE `track_table` ( `id` int(16) unsigned NOT NULL, `userID` smallint(16) unsigned NOT NULL, `tableName` varchar(255) NOT NULL DEFAULT '', `tupleID` int(16) unsigned NOT NULL, `date_insert` datetime NOT NULL, `action` char(12) NOT NULL DEFAULT '', `className` varchar(255) NOT NULL, PRIMARY KEY (`id`), KEY `userID` (`userID`), KEY …

1
เกิดข้อผิดพลาดในการสร้าง foreign key จาก MySQL Workbench
ฉันพยายามซิงโครไนซ์การเปลี่ยนแปลงสคีมาจาก MySQL Workbench กับฐานข้อมูลของฉัน ฉันได้รับข้อผิดพลาดต่อไปนี้เมื่อพยายามสร้างคีย์ต่างประเทศ: Executing SQL script in server ERROR: Error 1005: Can't create table 'tomato.#sql-2730_1b8' (errno: 121) นี่คือคำสั่งที่พยายามเรียกใช้: ALTER TABLE `tomato`.`ing_allergy_ingredient` ADD CONSTRAINT `fk_ai_allergy` FOREIGN KEY (`allergy_id` ) REFERENCES `tomato`.`ing_allergy` (`allergy_id` ) ON DELETE NO ACTION ON UPDATE NO ACTION ความคิดเห็นใด ๆ ที่ข้อผิดพลาดนี้หมายถึงอะไร
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.