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

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

4
ตรวจสอบข้อ จำกัด ไม่ทำงาน?
ฉันมีตารางต่อไปนี้ create table test ( id smallint unsigned AUTO_INCREMENT, age tinyint not null, primary key(id), check (age<20) ); ปัญหาคือCHECKข้อ จำกัด ไม่ทำงานในคอลัมน์อายุ ตัวอย่างเช่นเมื่อฉันใส่ 222 สำหรับเขตข้อมูลอายุ MySQL ยอมรับมัน
23 mysql  constraint 

2
แนวทางปฏิบัติที่ดีที่สุดสำหรับการสำรองฐานข้อมูล MySQL
ฉันได้ค้นพบเมื่อเร็ว ๆ นี้ว่าเว็บเซิร์ฟเวอร์ที่ใช้งานจริงของเราไม่ได้ทำการสำรองข้อมูลอยู่เป็นประจำ (หรือเลย) ฉันคุ้นเคยกับการสำรอง SQL Server DB แต่ไม่มีประสบการณ์มากมายกับ MySQL DB แนวทางปฏิบัติที่ดีที่สุดสำหรับการใช้ 'mysqldump' หรือเครื่องมือสำรองข้อมูลอื่น ๆ ฉันอาจ cron งานตารางเพื่อให้มันทำทุกคืนแล้วสำรองไฟล์ด้วยระบบสำรองของฉัน ขอบคุณ
23 mysql  mysqldump 

3
วิธีการเลือกแถวเฉพาะถ้ามีคอลัมน์อยู่หรือทุกแถวถ้าไม่มีคอลัมน์
ฉันกำลังเขียนสคริปต์ที่ได้รับจำนวนแถวสำหรับตารางไม่กี่อย่างไรก็ตามสำหรับบางตารางฉันต้องการได้รับจำนวนแถวที่มีการตั้งค่าสถานะ (ในกรณีนี้ใช้งาน = 1) มีวิธีที่ฉันสามารถทำได้ในแบบสอบถามหรือไม่ เช่น: ตารางusersมีคอลัมน์ที่เรียกว่าใช้งานอยู่ ตารางclientsไม่มีคอลัมน์ที่เรียกว่าใช้งานอยู่ ฉันต้องการรับจำนวนผู้ใช้ที่มีการใช้งาน = 1 และเพิ่งได้รับจำนวนลูกค้า ก่อนที่คุณจะพูดว่า "แค่เขียนโค้ดยาก ๆ " นี่คือข้อความค้นหาที่อยู่ในสคริปต์ python ที่สามารถเรียกใช้บนฐานข้อมูลที่แตกต่างกันมากมายและฉันไม่มีทางรู้ว่าตารางสคริปต์ของฉันจะถูกเลือกและหากมีคอลัมน์ที่เรียกว่าactiveและ ฉันต้องการมีเพียงหนึ่งแบบสอบถามที่จะทำมันทั้งหมดแทนที่จะเป็นสองคนแยกต่างหากและอาศัย mysql เพื่อโยนข้อผิดพลาดดังนั้นฉันรู้ว่าจะใช้อีกคนหนึ่ง
23 mysql  select  count 

1
วิธีการตั้งค่าหลายสาขาเป็นคีย์หลักใน MySQL?
ฉันมีโต๊ะที่มีทุ่งนา EmployeeID blahblah blahblah2 ..... RecordMonth RecodrdYear ดังนั้นพนักงานแต่ละคนควรมีรายการที่ตรงกันสำหรับเดือน, ปี, Emp # ฉันจะตั้งค่าตารางได้อย่างไร ดังนั้นฉันจะตั้งค่าตารางอย่างไรเพื่อให้ EmployeeID สามารถอัปเดตเดือนละครั้ง แต่ไม่สามารถมีสองรายการสำหรับเดือนและปีที่ตรงกันได้

6
คำสั่ง DELETE ไม่เสร็จในตาราง 30,000,000 แถว
ฉันได้รับฐานข้อมูลและต้องการทำความสะอาดและเร่งความเร็ว ฉันมีตารางที่มีแถว 30,000,000 แถวซึ่งส่วนใหญ่เป็นข้อมูลขยะที่แทรกเนื่องจากข้อผิดพลาดในนามของโปรแกรมเมอร์ของเรา ก่อนที่ฉันจะเพิ่มดัชนีใหม่ที่ได้รับการปรับปรุงให้ดีขึ้นฉันจะแปลงตารางจาก MyISAM เป็น InnoDB และฉันต้องการลบแถวจำนวนมากที่มีข้อมูลขยะ ฐานข้อมูลคือ MySQL 5.0 และฉันมีสิทธิ์เข้าถึงรูทไปยังเซิร์ฟเวอร์ ฉันใช้งานคำสั่งเหล่านี้เป็นครั้งแรกผ่านทาง Adminer จากนั้น phpMyAdmin ทั้งคู่ก็มีผลลัพธ์เหมือนกัน คำสั่งที่ฉันใช้คือ DELETE FROM `tablename` WHERE `columnname` LIKE '-%' -เป็นหลักอะไรลบในคอลัมน์นี้ที่เริ่มต้นด้วยเส้นประ มันใช้เวลาประมาณ 3-5 นาทีและเมื่อฉันดูรายการกระบวนการมันก็หายไป จากนั้นฉันก็วิ่ง SELECT * FROM `tablename` WHERE `columnname` LIKE '-%' และจะส่งคืนแถวนับล้าน ทำไมคำสั่งลบของฉันจึงไม่เสร็จ PS, ฉันรู้ว่า MySQL 5.0 ล้าสมัยแล้วอย่างไร ฉันกำลังทำงานเกี่ยวกับการย้ายฐานข้อมูลไปยัง MySQL 5.6 w …

3
ควรตั้งค่าการจำลองแบบทาสของ MySQL ให้อ่านได้อย่างเดียวหรือไม่?
ฉันได้รับการจำลองแบบที่ทำงานบน Percona Server 5.5 โดยทำตามคำแนะนำนี้และสงสัยว่าฉันควรจะเพิ่มread-only=1ทาสของฉันmy.cnfเพื่อให้อ่านได้อย่างเดียวหรือไม่? คู่มือการตั้งค่าการจำลองแบบสำหรับตาราง mysql เพื่อให้ผู้ใช้มีการจำลองแบบ แต่ฉันส่วนใหญ่ใช้ทาสที่จะใช้ mysqldumps, ในกรณีฉุกเฉินการกำหนดค่าใหม่ให้เป็นหลักดังนั้นฉันไม่เชื่อว่าเราต้องการ (หรือควรมี) เขียนเปิดใช้งาน มันตลอดเวลา?

3
ค่าใช้จ่ายในการตรวจสอบแคชแบบสอบถามบ่อยครั้งคุ้มค่าหรือไม่
ขณะนี้ฉันกำลังทำงานกับฐานข้อมูล MySQL ที่เราเห็นการตรวจสอบความถูกต้องจำนวนมากจากแคชแบบสอบถามเป็นหลักเนื่องจากคำสั่ง INSERT, DELETE และ UPDATE จำนวนมากที่ถูกเรียกใช้งานในหลาย ๆ ตาราง สิ่งที่ฉันพยายามตรวจสอบคือการมีประโยชน์ใด ๆ หรือไม่ที่จะอนุญาตให้ใช้แคชแบบสอบถามสำหรับคำสั่ง SELECT ที่กำลังเรียกใช้กับตารางเหล่านี้ เนื่องจากพวกเขาได้รับการทำให้ใช้งานไม่ได้อย่างรวดเร็วดูเหมือนว่าสิ่งที่ดีที่สุดคือการใช้ SQL_NO_CACHE ในคำสั่ง SELECT ด้วยตารางเหล่านี้ ค่าใช้จ่ายในการตรวจสอบความถูกต้องบ่อยครั้งเป็นสิ่งที่คุ้มค่าหรือไม่? แก้ไข: ตามคำขอของผู้ใช้ @RolandoMySQLDBA ด้านล่างนี่คือข้อมูลเกี่ยวกับ MyISAM และ INNODB InnoDB ขนาดข้อมูล: 177.414 GB ขนาดดัชนี: 114.792 GB ขนาดโต๊ะ: 292.205 GB MyISAM ขนาดข้อมูล: 379.762 GB ขนาดดัชนี: 80.681 GB ขนาดโต๊ะ: 460.443 GB ข้อมูลเพิ่มเติม: เวอร์ชัน: …

2
Percona กับ MySQL
Percona คืออะไร มันแตกต่างจาก MySQL อย่างไร เมื่อใดที่เราควรพิจารณาเปลี่ยน (หรืออัปเกรด) จากสต็อก MySQL เป็น Percona เพื่อเพิ่มข้อ จำกัด บางอย่างในสถานการณ์ของเราเราเกือบจะใช้ InnoDB (ซึ่งฉันเข้าใจว่า Percona ได้ทำการปรับให้เหมาะสมมากที่สุด) ด้วยข้อ จำกัด คีย์ต่างประเทศที่กว้างขวางและขั้นตอนการจัดเก็บบางอย่าง สิ่งที่เรากำลังค้นหาอยู่ในปัจจุบันคือ MySQL นั้นทำการปรับแต่งข้อความค้นหาของเราอย่างไม่เหมาะสมดังนั้นแบบสอบถามใดก็ตามที่มีส่วนร่วมเกิน 3-4 รายการเราต้องสร้างอย่างชัดเจนด้วย STRAIGHT joins เพื่อปรับปรุงประสิทธิภาพ

3
ทำไม 'โหลดข้อมูล INFILE' เร็วกว่าคำสั่ง INSERT ปกติ?
ฉันได้อ่านบทความที่กล่าวถึงเราสามารถบรรลุ60,000 แทรกต่อวินาทีโดยใช้LOAD DATA IN FILEคำสั่งที่อ่านจากไฟล์ csv และแทรกข้อมูลลงในฐานข้อมูล ทำไมมันควรแตกต่างจากเม็ดมีดทั่วไป? แก้ไข: ฉันลดการเดินทางไป - กลับโดยเรียกเพียงINSERTคำสั่งเดียว: INSERT INTO tblname VALUES (NULL,2,'some text here0'),(NULL,2,'some text here1') ,(NULL,2,'some text here2'),(NULL,2,'some text here3') .....,(NULL,2,'some text here3000'); แล้วเรื่องนี้ล่ะ
22 mysql  import  bulk 

4
ข้อผิดพลาดของ MySQL: การเข้าถึงถูกปฏิเสธสำหรับผู้ใช้ 'a' @ 'localhost' (ใช้รหัสผ่าน: ใช่)
'a'@'%'ผมใช้บัญชีรากสร้างบัญชี แต่ฉันไม่สามารถใช้บัญชีเพื่อเชื่อมต่อกับเซิร์ฟเวอร์ MySQL เมื่อฉันระบุพารามิเตอร์โฮสต์ ฉันสามารถเชื่อมต่อได้สำเร็จโดยไม่มี-hพารามิเตอร์ โปรดดูข้อความการถอดเสียงด้านล่าง ฉันหวังว่าบางคนสามารถช่วยฉันอธิบายได้ ขอบคุณ mysql> grant all on *.* to 'a'@'%' identified by a; ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'a' at line 1 …

6
วิธีที่เร็วที่สุดในการตรวจสอบว่าตาราง InnoDB เปลี่ยนไปหรือไม่
แอปพลิเคชันของฉันเข้มข้นมากฐานข้อมูล ขณะนี้ฉันใช้งาน MySQL 5.5.19 และใช้ MyISAM แต่ฉันอยู่ในขั้นตอนการโอนย้ายไปยัง InnoDB ปัญหาเดียวที่เหลืออยู่คือประสิทธิภาพการตรวจสอบ แอปพลิเคชันของฉันทำประมาณ 500-1,000 CHECKSUM TABLEข้อความต่อวินาทีในช่วงเวลาเร่งด่วนเนื่องจากไคลเอนต์ GUI กำลังสำรวจฐานข้อมูลอย่างต่อเนื่องเพื่อการเปลี่ยนแปลง (เป็นระบบตรวจสอบดังนั้นต้องตอบสนองและรวดเร็วมาก) ด้วย MyISAM จะมีการตรวจสอบสดที่คำนวณล่วงหน้าบนการปรับเปลี่ยนตารางและเร็วมาก อย่างไรก็ตามไม่มีสิ่งนั้นใน InnoDB ดังนั้นCHECKSUM TABLEช้ามาก ฉันหวังว่าจะสามารถตรวจสอบเวลาอัปเดตล่าสุดของตารางได้โชคไม่ดีที่ InnoDB ไม่สามารถใช้ได้เช่นกัน ฉันติดอยู่ในขณะนี้เนื่องจากการทดสอบแสดงให้เห็นว่าประสิทธิภาพของแอปพลิเคชันลดลงอย่างมาก มีรหัสบรรทัดมากเกินไปที่จะอัพเดตตารางดังนั้นการใช้ตรรกะในแอปพลิเคชันเพื่อเปลี่ยนตารางบันทึกไม่เป็นไปตามคำถาม มีวิธีใดที่รวดเร็วในการตรวจจับการเปลี่ยนแปลงในตาราง InnoDB หรือไม่

3
LIKE ถูกนำไปใช้อย่างไร
ทุกคนสามารถอธิบายวิธีการใช้งานตัวดำเนินการ LIKE ในระบบฐานข้อมูลปัจจุบัน (เช่น MySQL หรือ Postgres) ได้อย่างไร หรือชี้ให้ฉันอ้างอิงบางอย่างที่อธิบายได้หรือไม่ แนวทางที่ไร้เดียงสาคือการตรวจสอบแต่ละเร็กคอร์ดดำเนินการจับคู่นิพจน์ปกติหรือการจับคู่สตริงบางส่วนในสาขาที่สนใจ แต่ฉันมีความรู้สึก (หวัง) ว่าระบบเหล่านี้ทำสิ่งที่ชาญฉลาดขึ้น

7
จำเป็นต้องโยกย้าย SQL Server ไปยัง MySQL
ฉันมีฐานข้อมูลบน SQL Server 2008 บนเซิร์ฟเวอร์ Windows และฉันต้องการย้ายข้อมูลทั้งหมดไปยังฐานข้อมูล MySQL บนเซิร์ฟเวอร์ Ubuntu ฉันได้ลองใช้ตัวช่วยสร้างการนำเข้าและส่งออกเซิร์ฟเวอร์ SQL ด้วยไดรเวอร์ MySQL ODBC และเข้าถึงฐานข้อมูลทั้งสองได้อย่างถูกต้อง แต่ไฟล์ xml ที่มีข้อกำหนดสำหรับการแปลงประเภทไม่มีอยู่จริงและข้อกำหนด จำกัด เกินไปสำหรับฉันในการสร้างอย่างถูกต้อง ไม่มีใครรู้วิธีสร้างไฟล์แปลงประเภทหรือสถานที่ที่จะได้รับเครื่องมือที่ดีกว่าสำหรับการถ่ายโอนข้อมูลนี้หรือไม่?

3
การนำเข้าการถ่ายโอนข้อมูล mysql ช้ามากบนเครื่องของนักพัฒนาของฉัน
ฉันมี SQL dump มันใหญ่มาก (411 MB) และใช้เวลา 10 นาทีในการนำเข้าบนเซิร์ฟเวอร์ A การนำเข้าเดียวกันบนเวิร์กสเตชัน B ของฉันมีการประเมิน (pipeviewer) 8 ชั่วโมงเพื่อนำเข้า (มันนำเข้า 31 MB ใน 40 นาที ) นี่คือปัจจัย 53 ที่ช้ากว่า รายละเอียด: Server A: MySQL Version: 5.5.30-1.1 (Debian) 2 GB RAM 1 core QEMU Virtual CPU version 1.0 - cpu MHz: 3400.020 Workstation B: MySQL …

1
ดิ้นรนเพื่อดีบักการใช้งาน CPU สูงในอินสแตนซ์ Amazon RDS MySQL
เรากำลังเรียกใช้เซิร์ฟเวอร์ MySQL RDS m1.x ใหญ่และมีปัญหาบางอย่างกับการใช้งาน CPU สูง เรามีปัญหาบางอย่างเมื่อไม่กี่สัปดาห์ที่ผ่านมาเนื่องจากการใช้งาน CPU สูงถึง 100% ในกรณีที่มีขนาดใหญ่ เมื่อเราอัพเกรดขนาดเป็น xlarge ซึ่งทำให้สิ่งต่าง ๆ มีเสถียรภาพชั่วขณะหนึ่ง แต่การใช้งาน CPU จะค่อยๆขยายตัวขึ้นอีกครั้ง ในช่วงสัปดาห์ที่ผ่านมาการใช้งานซีพียูในช่วง 90 ปีที่ผ่านมาสูงถึง 100% หรือประมาณนั้นอย่างต่อเนื่องเมื่อวานนี้ซึ่งทำให้พื้นที่การผลิตของเราหยุดชะงัก หลังจากรีบูตเซิร์ฟเวอร์ db การใช้งาน CPU ภายในไม่กี่ชั่วโมงจะเพิ่มขึ้นเป็นระดับเดียวกัน ฉันเรียกใช้รายการกระบวนการแสดงบนเซิร์ฟเวอร์ mysql และได้รับการตรวจสอบเหมือนกันผ่านผู้ดูแลระบบ MySQL ดูเหมือนจะไม่มีคิวรีที่ใช้เวลานานหรือคิวรีจำนวนมาก มีกระบวนการบางอย่างที่อยู่ในสถานะสลีปเป็นเวลานาน ... เหล่านี้คือ daemons คนทำงานแยกที่ทำงานนอกแอปหลักของเราซึ่งสื่อสารกับฐานข้อมูล ฉันได้คัดลอกผลลัพธ์ของรายการกระบวนการด้านล่างโดยเปลี่ยนชื่อเซิร์ฟเวอร์เพื่อให้คำอธิบายว่ามันคืออะไร: +------+----------+---------------------------------------------------+--------------+---------+-------+--------------+----------------------------------------------------------------------------------------+ | Id | User | Host | db …
21 mysql 

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