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

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

2
การกำหนดค่า MySQL 5.1 InnoDB / 24GB RAM - โหลดสูง bi-xeon
ฉันกำลังใช้งานแอพ facebook ซึ่งปัจจุบันมีผู้ใช้งานพร้อมกัน 300 - 600 คน (และกำลังเติบโต) เพื่อให้ฮาร์ดแวร์พร้อมสำหรับการเติบโตฉันได้เปลี่ยน i7 / 12gb ram / 2x 80gb intel x25 ssd (debian 5.0 / mysql 5.0 / 64 บิต) เป็น bi-xeon / 24gb ram / 2x 120gb intel 320 ssd (Ubuntu 10.10 / mysql 5.1 / 64bit) ตอนนี้ฉันกำลังเผชิญกับปัญหาที่ประสิทธิภาพแย่กว่า "กล่องขนาดเล็ก" ในเซิร์ฟเวอร์ทั้งสองฉันใช้ nginx / …

4
MySQL: เหตุใด auto_increment จึง จำกัด เฉพาะแค่คีย์หลัก?
ฉันรู้ว่า MySQL จำกัด คอลัมน์ auto_increment ไว้ที่คีย์หลัก ทำไมนี้ ความคิดแรกของฉันคือมันเป็นข้อ จำกัด ด้านประสิทธิภาพเนื่องจากอาจมีบางตัวนับตารางบางแห่งที่ต้องถูกล็อคเพื่อรับค่านี้ ทำไมฉันจึงไม่มีคอลัมน์ auto_increment หลายคอลัมน์ในตารางเดียวกัน ขอบคุณ

2
ฉันจำเป็นต้องเพิ่มดัชนีคอลัมน์เดี่ยวใหม่ลงในตารางหรือไม่หากมีดัชนีหลายคอลัมน์ในฟิลด์นั้นอยู่แล้ว
ฉันได้ตารางที่มีหลายคอลัมน์UNIQUEดัชนีในและ_job_id____keyword_id__ ฉันจะต้องเพิ่มดัชนีอื่นหรือไม่__job_id__หากฉันมีแบบสอบถามบ่อยซึ่งดำเนินการGROUP BYในคอลัมน์นั้น (ที่ 100 ล้านแถวอาจใช้เวลาสักครู่นี่คือเหตุผลที่ฉันถามแทนที่จะทำ)
10 mysql  index 

3
การทำให้ฟิลด์เป็นเอกเทศทำให้เป็นดัชนีหรือไม่?
หากฉันสร้างuniqueข้อ จำกัด ในฟิลด์ฉันต้องสร้างดัชนีบนฟิลด์นั้นเพื่อให้ได้เวลาแทรกที่ปรับขนาดได้หรือไม่ หรือจะทำเพื่อฉัน (แม้ว่าดัชนีที่ใช้ไม่สามารถเข้าถึงได้แบบสาธารณะ) โดยเฉพาะฉันทำงานกับ Apache Derby สำหรับการสร้างต้นแบบแม้ว่าฉันอาจจะย้ายไปยัง MySQL ในอนาคตอันใกล้ ฉันก็หวังว่าอาจมีบางอย่างในมาตรฐาน SQL ที่บอกอะไรบางอย่างเกี่ยวกับเรื่องนี้ ฉันไม่จำเป็นต้องค้นหาตามฟิลด์นี้ดังนั้นฉันจึงไม่ต้องการสร้างดัชนีที่ไร้ประโยชน์ แต่ฉันอยากจะมีดัชนีที่ไร้ประโยชน์มากกว่ามีO(n)เวลาแทรก

2
InnoDB หมดเวลาไม่ได้อธิบาย
ฉันได้เห็นการอัปเดตพื้นฐานบางอย่างหมดเวลาเมื่อเร็ว ๆ นี้และไม่สามารถระบุสาเหตุได้ ตัวอย่าง: // # Query_time: 51 Lock_time: 0 Rows_sent: 0 Rows_examined: 0 UPDATE photos SET position = position + 1 WHERE (photo_album_id = 40470); บันทึกเดียวกันไม่มีรายการที่มี Lock_time> 0 การเรียกใช้show innodb statusจะไม่เปิดเผยการล็อคที่เกี่ยวข้อง ปัญหานี้ดูเหมือนว่าจะมีผลกระทบกับตารางที่แตกต่างกันอย่างน้อย 5 ตารางตามบันทึกของเซิร์ฟเวอร์แอปของฉัน (ซึ่งแสดงMysql::Error: Lock wait timeout exceededข้อผิดพลาดที่เกี่ยวข้องกับแต่ละรายการที่เกี่ยวข้องในบันทึก mysql ช้า) มีความคิดว่าจะไปจากที่นี่ไหม? ฉันตีปลายตายในทุกทิศทาง ขอบคุณ แก้ไข: สร้างตาราง `photos` ( `id` …

4
ทำซ้ำฐานข้อมูล MySQL ระยะไกลไปยัง MS SQL Server 2008
ฉันต้องการทำซ้ำเนื้อหาของฐานข้อมูล MySQL เป็นฐานข้อมูล MS SQL Server 2008 เป็นไปได้ไหม ใครสามารถร่างขั้นตอนที่จำเป็นเพื่อให้บรรลุนี้ ขอบคุณ

9
คลัสเตอร์ MySQL แบบโหลดบาลานซ์โดยไม่มี load balancer
ฉันต้องการสร้างคลัสเตอร์ MySQL ที่มีความสมดุลในการโหลด แต่ไม่มี load-balancer จริงเพื่อที่จะไม่เพิ่มจุดของความล้มเหลวหรือความซับซ้อนอื่น สิ่งที่ฉันคิดคือการมีดังต่อไปนี้: มีการตั้งค่าหลักสำหรับ MySQL บนไคลเอนต์ทุก ๆ ให้วางพร็อกซี round-robin อย่างง่ายซึ่งจะหมุนเวียนการร้องขอระหว่างเซิร์ฟเวอร์ เป็นไปได้ไหม หรือมีวิธีที่ดีกว่าเพื่อให้บรรลุนี้
10 mysql 

2
กดไลค์หรือโหวตโพสต์
ฉันกำลังสร้างโปรแกรมขนาดเล็กที่ผู้ใช้โพสต์หรือเขียนบล็อก ในโพสต์เหล่านั้นผู้ใช้รายอื่นสามารถชอบหรือไม่ชอบโพสต์ดังกล่าวในเฟสบุ๊คหรือโพสต์โหวตลงหรือโพสต์ลงโพสต์ในสแต็คโอเวอร์โฟลว์ ฉันอยากจะรู้โครงสร้างฐานข้อมูลที่ดีซึ่งใช้กันทั่วไปและโปรแกรมทำงานอย่างมีประสิทธิภาพกับโครงสร้างนั้น ฉันมีสองตัวเลือก เป็นครั้งแรก โพสต์: id head message datepost likes dislikes 1 ab anchdg DATE 1,2,3 7,55,44,3 ในทางข้างต้นidเป็น postid ในคอลัมน์1,2,3ไลค์คือรหัสของผู้ใช้ที่ชอบหรืออัปเดตโพสต์หรือบล็อก 7,55,44,3คือรหัสของผู้ใช้ที่ไม่ชอบหรือลดระดับโพสต์หรือบล็อก ที่สอง โพสต์: id head message datepost 1 ab anchdg DATE ชอบอะไร: id postid userid 1 1 1 2 2 2 ไม่ชอบ: id postid userid 1 1 7 2 …

1
ค่าเริ่มต้นที่ไม่ถูกต้อง (mysql 5.7) สำหรับฟิลด์การประทับเวลา
แก้ไข: เมื่อปรับปรุงฐานข้อมูลที่มีอยู่จาก mysql 5.6 และดำเนินการ: UPDATE phppos_register_log SET shift_end = '2015-01-01 00:00:00' WHERE shift_end = '0000-00-00 00:00:00'; สิ่งนี้ผลิต: #1292 - Incorrect datetime value: '0000-00-00 00:00:00' for column 'shift_end' at row 1 #1067 - Invalid default value for 'shift_start' สิ่งนี้ทำงานใน mysql <= 5.7 ฉันไม่พบเอกสารใด ๆ เกี่ยวกับสิ่งนี้ ... ปัญหานี้คืออะไร CREATE TABLE `phppos_register_log` …
10 mysql  mysql-5.7 

1
MySQL InnoDB Deadlock สำหรับการสืบค้นง่ายๆ 2 แบบ
ฉันมีการหยุดชะงักสำหรับข้อความค้นหาแทรกสองรายการนี้: insert into PlayerClub (modifiedBy, timeCreated, currentClubId, endingLevelPosition, nextClubId, account_id) values (0, '2014-12-23 15:47:11.596', 180, 4, 181, 561) insert into PlayerClub (modifiedBy, timeCreated, currentClubId, endingLevelPosition, nextClubId, account_id) values (0, '2014-12-23 15:47:11.611', 180, 4, 181, 563) นี่คือสถานะ InnoDB: ------------------------ LATEST DETECTED DEADLOCK ------------------------ 2014-12-23 15:47:11 1f4c *** (1) TRANSACTION: TRANSACTION 19896526, …
10 mysql  innodb  deadlock 

4
แสดงชื่อตาราง + จำนวนเรคคอร์ดสำหรับแต่ละตารางในฐานข้อมูล mysql innodb
วิธีแสดงรายการตารางทั้งหมดในฐานข้อมูลปัจจุบันพร้อมกับจำนวนแถวของตาราง กล่าวอีกนัยหนึ่งคุณสามารถคิดถึงคำถามที่จะเกิดขึ้นกับสิ่งนี้ใน mysql หรือไม่? +------------------------++------------------------+ | Tables_in_database | Number of rows | +------------------------++------------------------+ | database 1 | 1000 | | database 2 | 1500 | +------------------------++------------------------+ วิธีการที่แตกต่างยินดีต้อนรับ
10 mysql  innodb  select  count 

3
กู้คืน MySQL Tables จากไฟล์. ibd, .frm และ mysqllogbin
ด้วยเหตุผลบางอย่างเมื่อฉันพยายามเปิดตารางของฉันที่เก็บไว้ใน.frmและ.ibdไฟล์ (ไม่ว่าจะใน MySQL หรือ phpmyadmin) มันทำให้ฉันมีข้อผิดพลาดทางไวยากรณ์หรือมันบอกว่ามันไม่มีอยู่ ฉันได้อ่านโพสต์อื่นที่มีปัญหาคล้ายกันนี้ แต่ฉันไม่ทราบวิธีตรวจสอบว่าinnodb_file_per_tableเปิดใช้งานหรือไม่และโดยรวมฉันสับสนจริงๆ ฉันแปลงสำเนาmysql-bin.000002ไฟล์เป็นไฟล์ txt ด้วยดังนั้นฉันเห็นว่าข้อมูลจากฐานข้อมูลของฉันไม่สูญหายทั้งหมด ฐานข้อมูลถูกสร้างขึ้นเมื่อปีที่แล้ว ฉันมีmysql-bin.00000ไฟล์เหล่านี้ 6 ไฟล์ แต่ด้วยเหตุผลบางอย่างไฟล์.000002ใหญ่ที่สุด ตอนนี้ฉันมี.ibdและ.frmไฟล์สำหรับฐานข้อมูลทั้งหมดของฉัน แต่ฉันกำลังสูญเสียว่าฉันสามารถคืนค่ากลับสู่ MySQL หรืออย่างน้อยก็เป็นสิ่งที่ฉันสามารถอ่านได้ ฉันใช้ WampServer 2.4 และ MySQL 5.6.12 บน Windows 2003 Server นอกจากนี้ฉันควรจะดาวน์โหลดปลั๊กอินใน InnoDB ด้วยหรือไม่

1
MySQL Collation utf8_unicode แตกต่างกัน
แต่ฉันได้อ่านเกี่ยวกับความสำคัญของการจัดเรียง MySQL และสิ่งที่ฉันได้เรียนรู้เกี่ยวกับความเข้ากันได้และความถูกต้องจนถึงขณะนี้ 4 สิ่งเหล่านี้ดูเหมือนจะเป็นทางออกที่ดีที่สุดของฉัน utf8_unicode_ci utf8_unicode_520_ci utf8mb4_unicode_ci utf8mb4_unicode_520_ci จากความเข้าใจของฉัน uft8mb4 จะดีสำหรับตัวละครด้วยภาษา mutli (ตัวละคร) การสนับสนุน (ญี่ปุ่นเช่น) uf8 รองรับ 3 ไบต์เท่านั้นในขณะที่ uf8mb4 รองรับ 4 ไบต์ ดังนั้นดูเหมือนว่าตัวเลือกที่ชัดเจนจะเป็น uf8mb4 แต่การจับนั้นดูเหมือนว่าคุณมีขีดจำกัดความยาว (ประณาม! ฉันต้องการเค้กของฉันและกินมันด้วย) ซึ่งเป็นข้อกังวลเล็กน้อย (ฉันคิดว่า) จากนั้นคุณคำนึงถึงมาตรฐาน 520; ซึ่งเสนอเพิ่มเติมจากสิ่งเล็ก ๆ น้อย ๆ ที่ฉันสามารถหาได้ แต่แน่นอนว่าเป็นปัญหาฉันสามารถหาได้น้อยมากเกี่ยวกับเรื่องนี้ มีเพียงคนเท่านั้นที่พูดว่าเป็นการปรับปรุง แต่ก็ยังคลุมเครือในเรื่องของความเป็นอยู่ ฉันต้องการได้มากที่สุดโดยมีข้อ จำกัด น้อยที่สุดเท่าที่จะเป็นไปได้ ... ฉันคิดว่าบางคนที่นี่อาจรู้อะไรสักอย่างหรือสองอย่าง เว็บไซต์ MySQL อย่างเป็นทางการไม่ได้ให้ข้อมูลเท่าที่ฉันหวังไว้ จาก …
10 mysql 

3
mysqldump - ธุรกรรมเดี่ยว แต่อัพเดตคิวรี่กำลังรอการสำรองข้อมูล
ถ้าฉันใช้ mysqldump - ธุรกรรมเดี่ยวตามเอกสารที่ควรทำตารางล้างด้วยล็อคการอ่านเพื่อให้ได้สถานะที่สอดคล้องกันจากนั้นเริ่มต้นการทำธุรกรรมและไม่มีนักเขียนที่ควรจะรอ อย่างไรก็ตามเมื่อคืนนี้ฉันได้พบกับสถานการณ์ต่อไปนี้: ส่วนที่ตัดตอนมาจากรายการกระบวนการเต็มรูปแบบแสดง: หลายร้อยคน ... Command: Query Time: 291 State: Waiting for table flush Info: insert into db_external_notification..... ถ้าอย่างนั้น: Command: Query Time: 1204 State: Sending data Info: SELECT /*!40001 SQL_NO_CACHE */ * FROM `db_external_notification` และเธรดที่เหลืออยู่ในโหมดสลีป ไม่มีใครมีความคิดใด ๆ สิ่งที่แทรกเหล่านี้รอ? ฉันไม่เห็นตาราง FLUSH หรือ DDL ใด ๆ หรืออะไรก็ตามที่กล่าวถึงในคู่มือที่อาจทำให้ข้อความค้นหารอ คำสั่ง mysqldump …

1
วิธีสอบถามและเพิ่มมูลค่า (ตัวนับ) ในวิธีที่ปลอดภัยต่อเธรด (หลีกเลี่ยงสภาพการแข่งขัน)
ในตารางที่แต่ละแถวมีเคาน์เตอร์ (เพียงค่าจำนวนเต็ม) ผมจำเป็นต้องได้รับค่าปัจจุบันและเพิ่มขึ้นในเวลาเดียวกัน อย่างมีประสิทธิภาพฉันต้องการทำสิ่งนี้: SELECT counter FROM table WHERE id=123 UPDATE table SET counter=counter+1 WHERE id=123 แต่การทำเช่นนี้เนื่องจากเคียวรีสองรายการนั้นไม่ปลอดภัยสำหรับเธรด: หลายกระบวนการที่ทำสิ่งเดียวกัน (ในแถวเดียวกัน) อาจได้รับค่าตัวนับเดียวกัน ฉันต้องการให้ทุกอย่างไม่ซ้ำกันดังนั้นแต่ละกระบวนการจะได้รับมูลค่าปัจจุบันตามจริงและเพิ่มขึ้นทีละรายการ ฉันสามารถนึกถึงการก่อสร้างที่ฉันใช้การล็อกแบบแมนนวลต่อแถว แต่ฉันสงสัยว่าจะมีวิธีที่ง่ายกว่านี้หรือไม่
10 mysql  locking 

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