时间:2019-09-16 14:55:46 作者:无名 浏览量:47
大家好,小编是个电脑软件控,数据库表表面上存在索引和防错机制,然而一个简略的查询就会消耗很长时间。Web应用程序或许在开发环境中运转良好,但在产品环境中体现同样糟糕。假如你是个数据库管理员,你很有可能现已在某个阶段遇到上述情况。因此,本文将介绍对MySQL进行功能优化的技巧和窍门。
1、存储引擎的选择
假如数据表需求事务处理,应该考虑运用InnoDB,由于它完全符合ACID特性。假如不需求事务处理,运用默认存储引擎MyISAM是比较明智的。并且不要尝试同时运用这两个存储引擎。考虑一下:在一个事务处理中,一些数据表运用InnoDB,而其他的运用MyISAM。成果呢?整个subject将被取消,只有那些在事务处理中的被带回到原始状况,其他的被提交的数据转存,这将导致整个数据库的抵触。然而存在一个简略的办法能够同时利用两个存储引擎的优势。目前大多数MySQL套件中包含InnoDB、编译器和链表,但假如你选择MyISAM,你仍然能够单独下载InnoDB,并把它作为一个插件。很简略的办法,不是吗?
2、计数问题
假如数据表选用的存储引擎支撑事务处理(如InnoDB),你就不该运用COUNT(*)核算数据表中的行数。这是由于在产品类数据库运用COUNT(*),最多返回一个近似值,由于在某个特定时间,总有一些事务处理正在运转。假如运用COUNT(*)显然会产生bug,呈现这种过错成果。
3、反复测验查询
查询最扎手的问题并不是无论怎样小心总会呈现过错,并导致bug呈现。恰恰相反,问题是在大多数情况下bug呈现时,应用程序或数据库现已上线。确实不存在针对该问题切实可行的解决办法,除非将测验样本在应用程序或数据库上运转。任何数据库查询只有经过上千个记载的很多样本测验,才干被认可。
MYSQL数据库优化性能六大技巧教程图2
4、避免全表扫描
通常情况下,假如MySQL(或许其他联系数据库模型)需求在数据表中查找或扫描恣意特定记载时,就会用到全表扫描。此外,通常最简略的办法是运用索引表,以解决全表扫描引起的低效能问题。然而,正如咱们在随后的问题中看到的,这存在过错部分。