来源深入浅出mysql数据库开发,优化,管理维护
定期分析表analyze
如果已经删除了表的一大部分,或者如果您已经对含有可变长度行的表(含有 VARCHAR, BLOB 或 TEXT 列的表)进行了很多更改,则应使用 OPTIMIZE TABLE。被删除的记录被保持在链接清单中,后续的 INSERT 操作会重新使用旧的记录位置。您可以使用 OPTIMIZE TABLE 来重新利用未使用的空间,并整理数据文的碎片。OPTIMIZE TABLE 只对 MyISAM, BDB 和 InnoDB 表起作用。
大批量插入数据:
1. 对于 Myisam 类型的表,可以通过以下方式快速的导入大量的数据。
ALTER TABLE tblname DISABLE KEYS;
loading the data
ALTER TABLE tblname ENABLE KEYS;
这两个命令用来打开或者关闭 Myisam 表非唯一索引的更新。在导入大量的数据到一
个非空的 Myisam 表时,通过设置这两个命令,可以提高导入的效率。对于导入大量
数据到一个空的 Myisam 表,默认就是先导入数据然后才创建索引的,所以不用进行
设置。
2. 而对于 Innodb 类型的表,这种方式并不能提高导入数据的效率。对于 Innodb 类型的表,我们有以下几种方式可以提高导入的效率:
a. 因为 Innodb 类型的表是按照主键的顺序保存的,所以将导入的数据按照主键的顺序排列,可以有效的提高导入数据的效率。如果 Innodb 表没有主键,那么系统会默认创建一个内部列作为主键,所以如果可以给表创建一个主键,将可以利用这个优势提高导入数据的效率。
b. 在导入数据前执行 SET UNIQUE_CHECKS=0,关闭唯一性校验,在导入结束后执行
SET UNIQUE_CHECKS=1,恢复唯一性校验,可以提高导入的效率。
c. 如果应用使用自动提交的方式,建议在导入前执行 SET AUTOCOMMIT=0,关闭自动提交,导入结束后再执行 SET AUTOCOMMIT=1,打开自动提交,也可以提高导入的效率。
优化insert语句:
3. 如果你同时从同一客户插入很多行,使用多个值表的 INSERT 语句。这比使用分开
INSERT 语句快(在一些情况中几倍)。
Insert into test values(1,2),(1,3),(1,4)…
4. 如果你从不同客户插入很多行,能通过使用 INSERT DELAYED 语句得到更高的速度。Delayed 的含义是让 insert 语句马上执行,其实数据都被放在内存的队列中,并没有真正写入磁盘;这比每条语句分别插入要快的多;LOW_PRIORITY 刚好相反,在所有其他用户对表的读写完后才进行插入;
5. 将索引文件和数据文件分在不同的磁盘上存放(利用建表中的选项);
6. 如果进行批量插入,可以增加 bulk_insert_buffer_size 变量值的方法来提高速度,但是,这只能myisam 表使用;
7. 当从一个文本文件装载一个表时,使用 LOAD DATA INFILE。这通常比使用很多 INSERT 语句快 20 倍;
8. 根据应用情况使用 replace 语句代替 insert;
9. 根据应用情况使用 ignore 关键字忽略重复记录。
优化group by语句:
默认情况下,MySQL 排序所有 GROUP BY col1,col2,....。查询的方法如同在查询中指定 ORDER BY子句,MySQL 可以毫不减速地对它进行优化,尽管仍然进行排序。如果查询包括 GROUP BY 但你想要避免排序结果的消耗,你可以指定 ORDER BY NULL禁止排序。
例如:INSERT INTO foo SELECT a, COUNT(*) FROM bar GROUP BY a ORDER BY NULL;
优化order by:
在某些情况中,MySQL 可以使用一个索引来满足 ORDER BY 子句,而不需要额外的排序 。where 条件和 order by 使用相同的索引,并且 order by 的顺序和索引顺序相同 ,并且 order by 的字段都是升序或者都是降序。
例如:下列 sql 可以使用索引。
SELECT * FROM t1 ORDER BY key_part1,key_part2,... ;
SELECT * FROM t1 WHERE key_part1=1 ORDER BY key_part1 DESC, key_part2 DESC;
SELECT * FROM t1 ORDER BY key_part1 DESC, key_part2 DESC;
但是以下情况不使用索引:
SELECT * FROM t1 ORDER BY key_part1 DESC, key_part2 ASC;
--order by 的字段混合 ASC 和 DESC
SELECT * FROM t1 WHERE key2=constant ORDER BY key1;
--用于查询行的关键字与 ORDER BY 中所使用的不相同
SELECT * FROM t1 ORDER BY key1, key2;
--对不同的关键字使用 ORDER BY:
相关推荐
mysql的优化 数据库(表)设计合理 我们的表设计要符合3NF 3范式(规范的模式) , 有时我们需要适当的逆范式 sql语句的优化(索引,常用小技巧.) 数据的配置(缓存设大) 适当硬件配置和操作系统 (读写分离.)
MYSQL 优化常用方法实例教程
简单描述数据库优化方案,以及数据库一些常用的操作,包括一些简单的查询语句,函数使用,合适学习mysql的读者。 简单描述数据库优化方案,以及数据库一些常用的操作,包括一些简单的查询语句,函数使用,合适学习...
MySQL DBA常用优化工具,非常有用的,必须要懂呀,哈哈
用于mysql数据库的优化,很实用的,赶快下载看看学习一下吧。
Mysql性能优化教程,有常用的mysql优化技术,比较实用。
mysql性能优化常用方法,以下为《构建高性能Web站点》部分内容节选,感谢您的阅读,您可以自由传播它,但请确保它的完 整性。
掌握优化 MySQL 服务器的方法 2. 什么是优化? 合理安排资源、调整系统参数使 MySQL 运行更快、更节省资源。 优化是多方面的,包括查询优化、更新优化、服务器优化等很多方面。没有特定方 式特定的方法,总是要具体...
2.3两个常用的优化技巧 2.4常用SQL优化 2.5常用SQL技巧 3.优化数据库对象 3.1优化表的数据类型逆规范化 3.2提高查询速度 4.锁问题 4.1MyISQM表锁 4.2InnoDB锁问题 5.优化MySQL Server 5.1MySQL体系结构...
mysql语句的常用优化及进阶优化必须要掌握的几条要素。
1、选取最适用的字段属性 3、使用联合(UNION)来代替手动创建的临时表 4、事务 5、锁定表 6、使用外键 7、使用索引 8、优化的查询语句
介绍了MYSQL的优化方法,以及常用工具的使用方法。 大家都反映分数要的太高了,自己整理了MYSQL的优化。希望能得到一些积分来下载其它的学习资源,为了方便大家现在免分放送了,大家可以互相学习。
本文档详细介绍了Mysql的查询优化性能的研究,对一些常用方法进行了优化改进~
此文档为mysql常用函数以及概念性问题包含优化函数的使用。
MySQL介绍及性能优化,MySQL是一个小型关系型数据库管理系统,开发者为瑞典MySQL AB公司。目前MySQL被广泛地应用在Internet上的中小型网站中。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多...
sql常用优化手段
本PPT共40页,开始介绍mysql的基本架构、查询过程详解、B-Tree索引原理、及详细实例。最后附送常用优化技巧。 培训用材料
韩顺平MYSQL优化文档,该文档里列举了常用MYSQL优化方法,并举出了合理和不合理的逆范式案例
mysql常用配置参数和状态变量 一、 常用参数优化 二、 MyISAM存储引擎优化 三、 InnoDB存储引擎优化
MySql常用面试题的作用主要是为了考察求职者对数据库的掌握情况,包括对数据库理论知识、数据库操作、数据库设计等方面的了解。MySql面试题主要分为两大部分,第一大部分是数据库理论知识,主要考察对数据库基础概念...