MySQL innodb引擎中小心count(*)陷阱
以下的文章主要描述的是MySQL innodb引擎中的count(*)陷阱,你如果对MySQL innodb引擎中的count(*)陷阱有兴趣的话你就可以点击以下的文章进行观看了。希望会给你带来一些帮助在此方面。 word引起MySQL数据库崩溃? InnoDB delete from xxx速度暴慢原因 MySQL
以下的文章主要描述的是MySQL innodb引擎中的count(*)陷阱,你如果对MySQL innodb引擎中的count(*)陷阱有兴趣的话你就可以点击以下的文章进行观看了。希望会给你带来一些帮助在此方面。
word引起MySQL数据库崩溃?
InnoDB delete from xxx速度暴慢原因
MySQL Storage Engine 小记
推荐圈子: JBPM @net
更多相关推荐 今天同学们在群里讨论oracle的count(*)与count(1)的问题,正好提到MySQL的情况。我突然想到自己遇到的问题:在myisam引擎执行count(*)速度非常快,而且执行速度与记录条数无关,而MySQL innodb却不是这样,记录越多,速度越慢。
于是做了一个实验,在一个有8000W条记录的innodb表执行了一下 select count(*) from table 。 果然一直等待,大概8分多后出来结果。马上再次执行相同的语句,用时大约22秒。马上执行第三次,还是约22秒。
于是我猜想innodb没有把记录数保存起来,而是做了实时统计,所以导致速度比较慢。第二次、第三次相对较快是因为高速缓存的原因。于是打电话咨询DBA同学。经过DBA同学的专业解答,我明白了:我猜对了,呵呵。所以,以后要注意在MySQL innodb中count(*)的问题,尽量避免吧……除非能确保该表始终保持很少的记录数。
另外,在网上查了一些资料:
引用
InnoDB Pitfalls
However, all is not rosy with InnoDB. Because of its transactional nature, it has bottlenecks of its own. On MyISAM, doing a query that does SELECT COUNT(*) FROM {some_table}, is very fast, since MyISAM keeps the information in the index.
On InnoDB, this info is not stored in an index, and even the index and the data are kept in the same file. So, doing the same query on a table can incur a significant performance penalty.
To check what overhead this has, I wrote a simple test benchmark code. I duplicated a client node table that has 20,243 rows from MyISAM to InnoDB.
On a quiescent AMD 64 machine with MySQL server 5.0.24, doing a SELECT COUNT(*) FROM node takes 0.835 milliseconds on MyISAM, while on InnoDB it takes 12.292 milliseconds!
以上就是对MySQL innodb引擎的count(*)问题的描述。

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

AI Hentai Generator
Generate AI Hentai for free.

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics

Backing up and restoring a MySQL database in PHP can be achieved by following these steps: Back up the database: Use the mysqldump command to dump the database into a SQL file. Restore database: Use the mysql command to restore the database from SQL files.

MySQL query performance can be optimized by building indexes that reduce lookup time from linear complexity to logarithmic complexity. Use PreparedStatements to prevent SQL injection and improve query performance. Limit query results and reduce the amount of data processed by the server. Optimize join queries, including using appropriate join types, creating indexes, and considering using subqueries. Analyze queries to identify bottlenecks; use caching to reduce database load; optimize PHP code to minimize overhead.

How to insert data into MySQL table? Connect to the database: Use mysqli to establish a connection to the database. Prepare the SQL query: Write an INSERT statement to specify the columns and values to be inserted. Execute query: Use the query() method to execute the insertion query. If successful, a confirmation message will be output.

Creating a MySQL table using PHP requires the following steps: Connect to the database. Create the database if it does not exist. Select a database. Create table. Execute the query. Close the connection.

To use MySQL stored procedures in PHP: Use PDO or the MySQLi extension to connect to a MySQL database. Prepare the statement to call the stored procedure. Execute the stored procedure. Process the result set (if the stored procedure returns results). Close the database connection.

One of the major changes introduced in MySQL 8.4 (the latest LTS release as of 2024) is that the "MySQL Native Password" plugin is no longer enabled by default. Further, MySQL 9.0 removes this plugin completely. This change affects PHP and other app

Oracle database and MySQL are both databases based on the relational model, but Oracle is superior in terms of compatibility, scalability, data types and security; while MySQL focuses on speed and flexibility and is more suitable for small to medium-sized data sets. . ① Oracle provides a wide range of data types, ② provides advanced security features, ③ is suitable for enterprise-level applications; ① MySQL supports NoSQL data types, ② has fewer security measures, and ③ is suitable for small to medium-sized applications.

PHP provides the following methods to delete data in MySQL tables: DELETE statement: used to delete rows matching conditions from the table. TRUNCATETABLE statement: used to clear all data in the table, including auto-incremented IDs. Practical case: You can delete users from the database using HTML forms and PHP code. The form submits the user ID, and the PHP code uses the DELETE statement to delete the record matching the ID from the users table.
