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

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

1
Qcache_free_memory ยังไม่เต็ม แต่ฉันได้รับ Qcache_lowmem_prunes จำนวนมาก
ฉันเพิ่งเริ่มเล่นน้ำกับแคชแบบสอบถามสำหรับ CMS ของเรา ทุกคนสามารถบอก (หรืออย่างน้อยให้เดาดี) เหตุผลที่ผมได้รับเป็นจำนวนมากของQcache_lowmem_prunesเมื่อมากกว่าครึ่งหนึ่งของQcache_free_memoryฟรี? query_cache_size=512M query_cache_limit=1M นี่คือลักษณะที่จะดูแลประมาณ 12 ชั่วโมง show status like '%qcach%'; +-------------------------+-----------+ | Variable_name | Value | +-------------------------+-----------+ | Qcache_free_blocks | 10338 | | Qcache_free_memory | 297348320 | | Qcache_hits | 10254104 | | Qcache_inserts | 6072945 | | Qcache_lowmem_prunes | 725279 | | Qcache_not_cached | …

2
เปลี่ยนเป็น Innodb_flush_log_at_trx_commit แบบไดนามิก
สิ่งนี้เกี่ยวข้องกับคำถามนี้ มันจะช่วยให้ได้ประสิทธิภาพที่ดีขึ้นสำหรับตาราง InnoDB ตามคู่มือ MySQL , innodb_flush_log_at_trx_commitเป็นตัวแปรแบบไดนามิกทั่วโลก ดังนั้นฉันสามารถเปลี่ยนได้โดยใช้คำสั่ง SET GLOBAL และดูเหมือนว่าจะทำงานได้ mysql> SET GLOBAL innodb_flush_log_at_trx_commit=2; Query OK, 0 rows affected mysql> SHOW VARIABLES LIKE 'innodb_flush_log_at_trx_commit'; +--------------------------------+-------+ | Variable_name | Value | +--------------------------------+-------+ | innodb_flush_log_at_trx_commit | 2 | +--------------------------------+-------+ 1 row in set แต่มันไม่ได้เปลี่ยนการตั้งค่า MySQL จริง เมื่อฉันอัปเดตmy.cnfและรีสตาร์ทเซิร์ฟเวอร์ MySQL มันทำงานได้ ดังนั้นฉันไม่สามารถเปลี่ยนตัวแปรโกลบอลในขณะใช้งาน ฉันชอบค่าเริ่มต้นinnodb_flush_log_at_trx_commit=1แต่ฉันต้องการเปลี่ยนเป็น …


4
MySQL InnoDB ล็อคกุญแจหลักในการลบแม้ใน READ COMMITTED
คำนำ แอปพลิเคชันของเราทำงานหลายเธรดที่ดำเนินการDELETEค้นหาแบบขนาน แบบสอบถามมีผลต่อข้อมูลที่แยกได้เช่นไม่ควรมีความเป็นไปได้ที่DELETEเกิดขึ้นพร้อมกันในแถวเดียวกันจากกระทู้แยก อย่างไรก็ตามตามเอกสาร MySQL ใช้ล็อคที่เรียกว่า 'คีย์ต่อไป' สำหรับDELETEงบซึ่งล็อคทั้งคีย์การจับคู่และช่องว่างบางส่วน สิ่งนี้นำไปสู่การล็อกที่ตายแล้วและทางออกเดียวที่เราพบคือใช้READ COMMITTEDระดับการแยก ปัญหา ปัญหาเกิดขึ้นเมื่อรันDELETEคำสั่งที่ซับซ้อนด้วยJOINs ของตารางขนาดใหญ่ ในบางกรณีเรามีตารางที่มีคำเตือนที่มีเพียงสองแถว แต่แบบสอบถามจำเป็นต้องวางคำเตือนทั้งหมดที่อยู่ในเอนทิตี้บางแห่งจากINNER JOINตาราง ed แยกสองตาราง แบบสอบถามมีดังนี้: DELETE pw FROM proc_warnings pw INNER JOIN day_position dp ON dp.transaction_id = pw.transaction_id INNER JOIN ivehicle_days vd ON vd.id = dp.ivehicle_day_id WHERE vd.ivehicle_id=? AND dp.dirty_data=1 เมื่อตาราง day_position มีขนาดใหญ่พอ (ในกรณีทดสอบของฉันมีแถว 1448) ธุรกรรมใด …

3
ใช้ MySQL ทำการเชื่อมต่อแบบหลายทางบนตาราง 100+ GB เป็นประจำหรือไม่
พื้นหลัง : ฉันได้สร้างเว็บแอปพลิเคชันที่ฉันต้องการให้สามารถปรับขนาดได้อย่างเหมาะสม ฉันรู้ว่าฉันไม่ใช่ Google หรือ Twitter แต่แอพของฉันใช้ข้อมูลจำนวนมากสำหรับผู้ใช้แต่ละรายและมีข้อกำหนดด้านข้อมูลที่ค่อนข้างสูง ฉันต้องการที่จะพร้อมที่จะไต่ระดับอย่างมีเหตุผลโดยไม่ต้องสร้างใหม่ทุกอย่างในภายหลัง ฉันถือว่าตัวเองเป็นนักพัฒนาซอฟต์แวร์ไม่ใช่ผู้เชี่ยวชาญด้านฐานข้อมูล นั่นเป็นเหตุผลที่ฉันโพสต์ที่นี่ หวังว่าคนที่มีความเชี่ยวชาญด้านฐานข้อมูลจำนวนมากสามารถให้คำแนะนำแก่ฉันได้ ด้วยจำนวนผู้ใช้ค่อนข้างมาก แต่ไม่มีอะไรเหมือนหมายเลข Facebook ฉันคาดว่าจะมีฐานข้อมูลที่มีลักษณะดังนี้: หนึ่ง "โต๊ะใหญ่": 250 ล้านแผ่น 20 คอลัมน์ ข้อมูลประมาณ 100 GB มีคีย์ต่างประเทศที่มีการจัดทำดัชนี (20) มีคอลัมน์ string_id varchar (500) ที่จัดทำดัชนี มีคอลัมน์ "ค่า" int (11) 4 ตารางอื่น ๆ : 10 ล้านแผ่นต่อแผ่น แต่ละข้อมูลประมาณ 2 - 4 GB แต่ละตารางเหล่านี้มี 4 - …
11 mysql  rdbms 

3
การรั่วไหลของประสิทธิภาพ INNODB อยู่ที่ไหน
ฉันมีปัญหาแปลก ๆ ซึ่งฉันไม่สามารถแก้ไขได้ ฉันเป็นโปรแกรมเมอร์เว็บมากกว่าผู้ดูแลเซิร์ฟเวอร์ / ฐานข้อมูลดังนั้นฉันหวังว่าจะมีใครบางคนที่นี่ที่สามารถช่วยฉันได้ สถานการณ์ ฉันทำงานในระบบที่จัดการจำนวนมากupdate, insertและdeleteการร้องขอ ด้วยเหตุนี้ฉันจึงเลือก INNODB เป็นเครื่องมือเก็บข้อมูลสำหรับความสามารถในการล็อคแถว เรากำลังอัปเดต 60,000 ระเบียนทุก ๆ 10 นาทีโดยใช้ Gearman เพื่อทำงานของเราบนเซิร์ฟเวอร์ที่แตกต่างกัน รหัสอยู่ใน PHP และเราใช้ Zend Framework ปัญหา SQLSTATE[HY000]: General error: 1205 Lock wait timeout exceeded; try restarting transaction เราได้รับข้อผิดพลาดด้านบนเกือบทุก 30 นาทีจากหนึ่งในคนงาน Gearman ของเรา mysql_report MySQL 5.1.63-0+squeeze1 uptime 15 9:52:12 Tue Sep …

1
ตาราง MySQL ที่มีการบันทึก 100,000 ครั้งมีการสอบถามบ่อยครั้ง
ฉันมีฐานข้อมูลเดียวประมาณ 100 ตารางเพื่อจัดเก็บข้อมูลประเภทต่างๆ ตารางที่สำคัญที่สุดคือตารางคำสั่งของเราซึ่งใช้ในการจัดเก็บคำสั่งซื้อของลูกค้าและมีมากกว่า 100,000 รายการ ณ ปัจจุบันและเพิ่มขึ้นเรื่อย ๆ ตารางนี้เป็นตารางที่มีการสืบค้นมากที่สุดในฐานข้อมูลของเราสำหรับส่วนต่างๆของข้อมูลที่ต้องการจากแดชบอร์ดคำสั่งซื้อแบบเรียลไทม์สถิติการวิเคราะห์และอื่น ๆ ฉันตรวจสอบฐานข้อมูลเป็นประจำและเปิดใช้งานแบบสอบถามช้าในฐานข้อมูลเพื่อติดตามปัญหา ฉันใช้สคริปต์เช่น mysqltuner เพื่อคายแบบสอบถามออกทุกวัน ฉันยังใช้ mysqlsla เพื่อรวบรวมข้อมูลเกี่ยวกับการสืบค้นที่ช้าที่สุด 10 อันดับแรกในฐานข้อมูลของเรา sample stat Count : 11.48k (30.66%) Time : 19.623758 s total, 1.709 ms avg, 239 µs to 2.475017 s max (18.64%) 95% of Time : 5.246833 s total, 481 µs …

2
เรียกใช้ SQL Query บนฐานข้อมูลทั้งหมด
ฉันมีบัญชีโฮสติ้งหนึ่งบัญชีโดยใช้ cPanel และ phpmyadmin ฉันมี 50 ฐานข้อมูลภายใต้บัญชีนี้ทั้งหมด WordPress ฉันต้องการแก้ไขแบบสอบถามนี้เพื่อให้ทำงานผ่านฐานข้อมูลทั้งหมดเพื่ออัปเดตรหัสผ่าน อัปเดต 'wp_users' SET 'user_pass' = MD5 ('somepassword') WHERE 'user_login' = 'ผู้ดูแลระบบ' LIMIT 1; หวังว่าจะมีทางออกที่สามารถกำหนดเป้าหมายฐานข้อมูลทั้งหมดแทนที่จะต้องผ่านพวกมันทีละราย ขอขอบคุณ
11 mysql  phpmyadmin 

1
ประสิทธิภาพของ InnoDB INSERT
สวัสดีฉันกำลังเรียกใช้ Percona Server เวอร์ชันล่าสุด รุ่นเซิร์ฟเวอร์: 5.5.24-55 Percona Server (GPL), Release 26.0 ฉันมีซีพียู 10 กล่องของคุณสมบัติเหล่านี้ processor : 0 vendor_id : AuthenticAMD cpu family : 16 model : 9 model name : AMD Opteron(tm) Processor 6128 stepping : 1 microcode : 0x10000d9 cpu MHz : 800.000 cache size : 512 KB มันมี …

2
พยายามเข้าใจ SHOW SLAVE STATUS ใน MySQL
ฉันมีการตั้งค่าการจำลองแบบ Master-Slave และดูเหมือนว่ามันจะทำงานได้ดี ด้านล่างเป็นผลลัพธ์ของSHOW SLAVE STATUSคำสั่ง: show slave STATUS\G; *************************** 1. row *************************** Slave_IO_State: Waiting for master to send event Master_Host: *.*.*.* Master_User: repliV1 Master_Port: 3306 Connect_Retry: 60 Master_Log_File: mysql-bin.000001 Read_Master_Log_Pos: 10726644 Relay_Log_File: mysqld-relay-bin.000056 Relay_Log_Pos: 231871 Relay_Master_Log_File: mysql-bin.000001 Slave_IO_Running: Yes Slave_SQL_Running: Yes Replicate_Do_DB: data1 Replicate_Ignore_DB: Replicate_Do_Table: Replicate_Ignore_Table: Replicate_Wild_Do_Table: Replicate_Wild_Ignore_Table: Last_Errno: …

6
ป้องกันการรีเซ็ต auto_increment id ในฐานข้อมูล Innodb หลังจากเซิร์ฟเวอร์รีสตาร์ท
ฉันเพิ่งอ่านว่าเนื่องจาก InnoDB คำนวณค่า AUTO_INCREMENT ใหม่เมื่อเซิร์ฟเวอร์รีสตาร์ตระเบียนใด ๆ ที่อยู่ท้ายสุดของรายการรหัสอาจมีการนำ ID กลับมาใช้ใหม่ ปกติแล้วนี่ไม่ใช่ปัญหาเพราะเมื่อผู้ใช้ลบทุกอย่างที่เกี่ยวข้องกับ ID จะถูกลบออกจากตารางอื่นด้วย แต่ฉันจงใจปล่อยให้โพสต์ฟอรัมของพวกเขากำพร้าติดป้ายว่า "โพสต์โดย = ผู้ใช้ # 123 =" ดังนั้นการสนทนาที่ผ่านมาจะถูกเก็บไว้ เห็นได้ชัดว่าควรใช้ ID ซ้ำนี่จะเป็นปัญหา ฉันไม่เคยมีปัญหานี้มาก่อนเพราะมีผู้ใช้ใหม่เพียงพอที่จะทำให้ ID ไม่สามารถนำมาใช้ซ้ำได้ด้วยวิธีนี้ อย่างไรก็ตามในการสมัครสมาชิกโครงการใหม่ของฉันนั้นหายากและการลบผู้ใช้ที่ไม่ได้ใช้งานบ่อย (โดยเฉพาะอย่างยิ่งเนื่องจากบัญชี "Open Alpha" ใช้งานได้ล่าสุดเป็นเวลาสามวันในการแสดงตัวอย่าง) และการใช้ ID ดังกล่าวได้เกิดขึ้นสามครั้งในขณะนี้ ฉันได้ "แก้ไข" ปัญหาด้วยการบันทึกค่าที่ถูกต้องสำหรับ AUTO_INCREMENT ที่อื่นและใช้สิ่งนั้นแทนการพึ่งพาค่าภายใน มีวิธีการที่แท้จริงที่จะให้ InnoDB จดจำค่าสุดท้ายจริงหรือไม่
11 mysql  innodb 


1
การสร้างใบแจ้งหนี้และการติดตาม
ทุก 2 สัปดาห์ระบบจะสร้างใบแจ้งหนี้ให้กับ บริษัท บริษัท จะได้รับใบแจ้งหนี้ในวันที่ 1 และ 16 ของทุกเดือน (มันจะทำงานผ่าน Cron Job ทุก 2 สัปดาห์มันสแกนผ่านตารางคำสั่งซื้อแล้วเพิ่มลงในตาราง 'ใบแจ้งหนี้' มีทางเลือกอื่นหรือไม่) มีรายการคำสั่งซื้อของลูกค้าในordersตารางและยังระบุ บริษัท ที่เป็นของ ( orders.company_id) invoiceตารางการคำนวณค่าใช้จ่ายทั้งหมดของการสั่งซื้อจากordersตาราง ฉันกำลังพยายามหาวิธีการออกแบบการติดตามใบแจ้งหนี้ที่สมเหตุสมผล บริษัท บางครั้งจะต้องส่งค่าธรรมเนียมหรือบางครั้งฉันส่งค่าธรรมเนียม ( invoice.amount) ฉันต้องการติดตามใบแจ้งหนี้ด้วยสิ่งต่อไปนี้: เมื่อ บริษัท ส่งจำนวนเงินให้ฉัน ฉันส่งจำนวนเงินให้ บริษัท เมื่อใด ได้รับเงินจำนวนเท่าใดจาก บริษัท ฉันส่งไปยัง บริษัท เท่าไร ฉันได้รับเงินเต็มจำนวนหรือไม่ (ถ้าไม่ฉันต้องอัปเดตสิ่งใดใน Db) สถานะใบแจ้งหนี้ (ส่งใบแจ้งหนี้, ยกเลิก, จำนวนเงินที่ได้รับ, จำนวนเงินที่ส่ง) นี่คือการออกแบบฐานข้อมูลฉันมาด้วย: …

3
mysql ปรับค่าการเชื่อมต่อสูงสุดโดยอัตโนมัติ
ฉันได้ตั้งค่าการเชื่อมต่อสูงสุดเป็นประมาณ 2000 ในไฟล์ my.cnf max_connections=2048 ฉันอัพเกรดเป็น 5.5.20 และตอนนี้ฉันเห็นบรรทัดต่อไปนี้ในบันทึกข้อผิดพลาด 120201 19:40:24 [Warning] Changed limits: max_open_files: 1024 max_connections: 214 table_cache: 400 ทำไม mysql เปลี่ยนค่าการเชื่อมต่อสูงสุดเป็น 214 # mysqladmin variables | grep max_connections | max_connections | 214 ไฟล์ที่นิ่มและแข็งถูก จำกัด โดยระบบปฏิบัติการคือ 1024 # ulimit -Sa | grep "open files" open files (-n) 1024 # ulimit …
11 mysql 

2
ย้ายโฟลเดอร์ข้อมูลและไดรฟ์ mysql centos
ฉันต้องการย้ายข้อมูลไปยังโฟลเดอร์อื่นและขับบนเซิร์ฟเวอร์ cent os db ของฉัน ฉันเพิ่มฮาร์ดไดรฟ์ใหม่ (เนื่องจากเรามีพื้นที่เหลือน้อย) ฉันมีฮาร์ดไดรฟ์ 1TB และฉันมี 2TB ใหม่ฉันต้องการวางข้อมูลบนเซิร์ฟเวอร์เดียวกัน (เซิร์ฟเวอร์เฉพาะที่โฮสต์ในดาต้าเซ็นเตอร์) ฉันต้องการที่จะรู้ว่าอะไรคือวิธีที่ง่ายในการโยกย้ายข้อมูลโดยไม่สูญเสียข้อมูลใด ๆ ขณะนี้ฉันมีข้อมูลอยู่ใน: /var/lib/mysql/บนระบบปฏิบัติการmysql version is 5.1
11 mysql 

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