Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何调整MySQL的存储引擎_Mysql_Innodb_Myisam - Fatal编程技术网

如何调整MySQL的存储引擎

如何调整MySQL的存储引擎,mysql,innodb,myisam,Mysql,Innodb,Myisam,我的数据库只有500万行,但内部连接和连接需要花费很多时间(55秒,60秒)。因此,我正在检查MyISAM设置是否存在问题 查询:显示状态,如“键%” +------------------------+-------------+ | Variable_name | Value | +------------------------+-------------+ | Key_blocks_not_flushed | 0 | | Key_blo

我的数据库只有500万行,但内部连接和连接需要花费很多时间(55秒,60秒)。因此,我正在检查MyISAM设置是否存在问题

查询:显示状态,如“键%”

+------------------------+-------------+
| Variable_name          | Value       |
+------------------------+-------------+
| Key_blocks_not_flushed | 0           | 
| Key_blocks_unused      | 275029      | 
| Key_blocks_used        | 3316428     | 
| Key_read_requests      | 11459264178 | 
| Key_reads              | 3385967     | 
| Key_write_requests     | 91281692    | 
| Key_writes             | 27930218    | 
+------------------------+-------------+

请给出您提高MyISAM性能的建议

我使用了超过45GB的数据库,我还面临性能问题

以下是我为提高性能而采取的一些措施

(1) 删除表上任何不必要的索引,特别注意唯一索引,因为它们禁用更改缓冲。如果没有理由使用唯一索引,请不要使用该索引;喜欢常规索引

(2) 按顺序插入将导致更少的页拆分(这将在不在内存中的表上执行更差),并且大容量加载与表大小没有具体关系,但它将有助于减少重做日志压力

(3) 如果批量加载新表,则延迟创建主键之外的任何索引。如果您在加载所有数据后创建它们,那么InnoDB就能够应用预排序和批量加载过程,这不仅更快,而且通常会产生更紧凑的索引。这种优化在MySQL 5.5中实现

(4) 确保使用InnoDB而不是MyISAM。MyISAM可以更快地插入表的末尾。Innodb是行级锁定,MYISAM是表级锁定

(5) 尽量避免对频繁更新的MyISAM表执行复杂的SELECT查询,并使用在第一个条件下返回较少结果的查询


(6) 对于经常更改的MyISAM表,请尽量避免使用所有可变长度列(VARCHAR、BLOB和TEXT)。该表使用动态行格式,即使它包含一个可变长度的列

MyISAM是一个糟糕的数据库引擎。如果可以,请使用InnoDB,它有许多MyISAM永远不会拥有的功能,比如日志记录、不爆炸以及在损坏时丢失所有数据。由于某些原因,我无法更改引擎,如果现在还不能完全改变效果。。。但是我们正在使用大量的读取数据。。。哪一个对Myisamysam最好?Myisam不是“最好”的。这是从20世纪90年代开始的,十多年来没有受到太多关注。InnoDB始终更易于扩展,MySQL 5.0到5.7在性能上有了巨大的改进。我希望你最终能改变这一点,你可以在InnoDB的引擎上投入大量内存,使其与MyISAM相比能够运行。向我们展示查询、它的
EXPLAIN SELECT
,以及“为表显示创建表”。
Key\u reads/Key\u read\u requests
非常低;这意味着“密钥缓冲区”足够大,可以有效地处理MyISAM索引。要从MyISAM更改为INNO,请发送命令给我。如果要更改表引擎,请使用
ALTER table t1 engine=InnoDB有关转换的次要问题,请参阅