MySQL数据库优化的具体方法
1。表格和核对表的定期分析
分析表的语法如下所示:
复制代码如下:分析当地no_write_to_binlog } { } { tbl_name |表tb1_name…
上面的语句用于分析和存储表的密钥分发。分析结果将使系统得到准确的统计信息,从而可以生成正确的SQL执行计划。如果用户觉得实际执行计划是不是预期的执行计划,分析表的执行可能会解决问题。在分析过程中,一个读锁用于锁定表。这对MyISAM,DBD是有用的,而InnoDB表。
例如,对数据表的分析
复制代码代码如下:table_name分析表
清单的语法如下所示:
复制代码如下:检查表tb1_name tbl_name {,}…{选项}…选择= {快速介质扩展| | | |改变}
检查列表的功能是检查一个或多个表是否有错误。检查表对MyISAM和InnoDB表的影响。对于MyISAM表,关键词统计更新。
检查表还可以检查视图中是否存在错误,如视图定义中引用的表不存在。
2。周期优化表
优化表的语法如下所示:
复制代码如下:优化{当地no_write_to_binlog }表tb1_name | { tbl_name }…
如果你删除表中的很大一部分,或者如果您有包含可变长度列表做出更多的改变(包括含VARCHAR,BLOB或文本列的表),你应该使用OPTIMIZE TABLE命令来优化表。此命令可以合并的空间碎片在桌子上,和消除删除或更新造成的空间的浪费,但表命令的优化只能在MyISAM,BDB和InnoDB表。
例如,table_name优化表
注意:分析、检查和优化将在执行期间锁定表。因此,MySQL数据库不忙时,必须注意执行相关操作。
常见的SQL优化
SQL语句我们经常使用我们开发的是插入,查询,等等。我们如何优化这些SQL语句
1。批量插入数据
当数据与加载命令一起导入时,适当的设置可以提高导入的速度。
对于MyISAM存储引擎的表,你可以快速大量进口以下数据
复制代码代码如下所示:
修改表tb1_name禁用按键;
加载数据
修改表tb1_name使钥匙;
禁用键,使键用于打开或关闭的MyISAM表的非唯一索引更新。当你输入大量的数据到一个非空的MyISAM表,你可以通过设置这两个命令提高输入效率。
进口大量的数据到一个空的MyISAM表时,默认的是将数据导入,然后创建索引,而索引不需要设置。
复制代码如下:LOAD DATA INFILE ' / / / text_txt'into家MySQL表格文本
对于InnoDB类型的表,这种方法并不能提高输入数据的效率,但也有优化InnoDB类型表的几种方法。
1、由于InnoDB表类型存储在主键的顺序,所以进口数据的主键排序,可有效提高输入数据的效率。
2、执行unique_checks = 0在导入数据,关闭唯一性检查,执行导入结束后设置unique_checks = 1,和恢复性检查,可以提高输入效率。
3,如果应用程序使用自动提交,建议执行自动提交= 0进口前,关闭自动提交,执行设置自动提交= 1的进口结束后,打开自动提交,同时提高进口效率。
优化INSERT语句
在进行数据插入时,可以考虑以下方法进行优化
1、如果同时插入来自一个客户机的大量行,请尝试使用多值表的INSERT语句。这种方式将大大减少链接的消耗,并在客户端和MySQL数据库之间关闭,使效率比单独执行的单独插入语句更快。
例如:
复制代码代码如下所示:
插入测试值(1,2)
插入测试值(3,4)
插入测试值(5,6)
变化三句以上:插入测试值(1,2),(3,4),(5,6)…
2。如果插入来自不同客户的大量行,可以使用INSERT延迟语句获得更高的速度。
意思是立即延迟INSERT语句,事实上的数据在队列中的记忆,并没有真正写入磁盘,每个语句的比例分别插入更快low_priority;相反,在所有其他用户在看完前插入。
三.将索引文件和数据文件存储在不同磁盘上
4。如果批量插入行的bulk_insert_buffer_size变量的值可以被添加以提高速度,但这只能用于MyISAM表。
5。当一个表是一个文本文件加载,加载数据文件使用。这通常比许多INSERT语句快约20倍。
下面是其他一些要注意MySQL性能优化的地方,你可以结合并充分发挥mysql的性能。
MySQL数据库查询优化
MySQL优化全策略相关数据库命令
为my.ini MySQL数据库中多站压缩优化2G内存