mysql和liunx系统都没有问题数据库突然变慢了是什么原因

啊,数据库突然变慢了……一定是因为什么……原因有很多。

让我们谈谈硬件......硬盘驱动器是一个障碍。
我在 2 02 2 年就遇到过这个问题。
服务器有一个旧的机械硬盘,运行简单的查询需要很长时间。
我查了一下,发现是磁盘I/O瓶颈。
数据读写速度太慢,无法读取。
尤其是晚上,数据量大的时候,简直就卡住了。
然后它们被固态硬盘取代,固态硬盘很快变得更快。

内存也不起作用。
我记得有一次,一个城市的服务器只有4 G内存。
结果,几个程序正在运行并填满了内存。
当数据库内存不足时,数据会在磁盘和内存之间来回移动,这个过程称为缓慢。
页面更改操作,好吧,无论如何它们都被卡住了。
之后,我添加了两个记忆棒,它变得更好了。

您还需要查看配置。
例如,有些人将查询缓存设置得很小,但结果缓存没有用。
或者你的设置可能太大,占用内存而没有效果。
还有innodb_buffer_pool_size。
该参数非常重要,必须进行相应调整。
向下调整此值将阻止数据库运行。
如果进行较大的调整,则会浪费内存。
真让人头疼啊!
索引也是一项技术任务。
如果索引创建不当,查询肯定会很慢。
我见过的最糟糕的事情是一个有数百个字段的表,查询时没有索引,扫描整个表,天哪......数据库卡在那里。
然后添加了索引,查询速度迅速提高。

查询本身也很重要。
有些查询过于复杂,例如连接多个表的笛卡尔积连接。
数据太多会直接烧毁CPU。
一些查询语句没有得到很好的优化。
例如,如果不使用索引进行排序,排序会非常慢。

数据量也是一个问题。
想一想。
该表有数百万条数据,每次查询都需要遍历它。
有多慢?之前我在做一个2 02 2 年的项目,表数据太多直接导致查询变慢。
桌子分开后就更好了。

数据碎片也是一个障碍。
数据每天都会添加、删除和更改。
碎片化的数据降低了读取效率。
我见过已经运行了一段时间的服务器。
数据碎片严重导致查询停止。
然后我们进行了数据优化。
碎片更少,速度更快。

服务器负载也有很大影响。
服务器上运行的程序较多,CPU和内存已满。
数据库能否继续成功运行?我曾经在一个城市的服务器上同时运行多个高负载应用程序。
结果数据库直接受到影响,速度变慢。
之后负载被分配,一切都很好。

网络问题也不容忽视。
带宽不足和高延迟导致数据库和客户端之间的数据传输缓慢。
我见过的最糟糕的事情是极高的网络延迟。
导致客户端在数据库操作过程中需要等待很长时间才能得到响应。
这是一个耻辱。

简而言之,数据库缓慢的原因有很多。
硬件、配置、查询、数据、服务器负载、网络...任何链接的问题都会减慢数据库的速度。

解决方法MySQL无法启动InnoDB引擎mysql不启动indb

Mysql数据库存储引擎有哪些?

上周,我和一位同事讨论了 MySQL 数据存储引擎。
MyISAM这个老朋友,读写速度很高,但是不支持事务。
适合读多写少的场景。
记得去年在一家数据仓库公司用它来存储日志数据,效果不错。

2 02 3 年,我们公司开始向InnoDB过渡。
事务、外键、行级锁都太重要了。
数据一致性不容忽视,尤其是在金融系统中。
我的一个朋友使用InnoDB作为他的在线交易平台,稳定性好,客户满意度高。

内存,我对这个不是很熟悉。
它似乎主要用于临时表和缓存。
速度很快,但是一旦断电数据就会丢失。
记得项目组曾经用它来做实时排名,非常方便。

Unite,这个引擎很有趣。
可以将多个MyISAM表合并为一张,解决一张表数据过多的问题。
不过操作起来有点困难,需要手动操作。

至于其他引擎,例如DBD(BerkeleyDB)和Federated,使用频率较低。
DBD 现在实际上已经被 InnoDB 取代了。
Federated在分布式数据场景中使用较多,但性能一般。

综上所述,存储机制的选择应该根据业务需求而定。
对于多读少写选择MyISAM,对于事务和高并发选择InnoDB,对于临时查询选择Memory,对于非常大的表选择Join。
当然,也可以利用分区表、分库、分表来优化存储结构。
由您决定什么最适合您。