文档详情

mysql,5.6,数据库,占用,内存,过多,的,解决方案.docx

发布:2018-11-19约5.32千字共11页下载文档
文本预览下载声明
mysql,5.6,数据库,占用,内存,过多,的,解决方案   篇一:SQL Server数据库占用过多内存的解决方法   SQL Server数据库占用过多内存的解决方法   SQL Server是怎样使用内存的   最大的开销一般是用于数据缓存,如果内存足够,它会把用过的数据和觉得你会用到的数据统统扔到内存中,直到   内存不足的时候,才把命中率低的数据给清掉。所以一般我们在看statistics io的时候,看到的physics read都是   0。其次就是查询的开销,一般地说,hash join是会带来比较大的内存开销的,而merge join和nested loop的开销比   较小,还有排序和中间表、游标也是会有比较大的开销的。所以用于关联和排序的列上一般需要有索引。   我们先来看数据缓存对性能的影响,如果系统中没有其它应用程序来争夺内存,数据缓存一般是越多越好,甚至有   些时候我们会强行把一些数据pin在高速缓存中。但是如果有其它应用程序,虽然在需要的时候MS SQL会释放内存,但是线程切换、IO等待这些工作也是需要时间的,所以就会造成性能的降低。这样我们就必须设置MS SQL的最大内存使用。可以在SQL Server 属性(内存选项卡)中找到配置最大使用内存的地方,或者也可以使用sp_configure来完 成。如果没有其它应用程序,那么就不要限制MS SQL对内存的使用。   最后我们来看查询的开销,这个开销显然是越低越好,因为我们不能从中得到好处,相反,使用了越多的内存多半   意味着查询速度的降低。所以我们一般要避免中间表和游标的使用,在经常作关联和排序的列上建立索引。   篇二:性能优化   1. 目标   ?   ?   ?   ? 了解什么是优化 掌握优化查询的方法 掌握优化数据库结构的方法 掌握优化MySQL服务器的方法   2. 什么是优化?   ? 合理安排资源、调整系统参数使MySQL运行更快、更节省资源。 ? 优化是多方面的,包括查询、更新、服务器等。   ? 原则:减少系统瓶颈,减少资源占用,增加系统的反应速度。   3. 数据库性能参数   ? 使用SHOW STATUS语句查看MySQL数据库的性能参数   ? SHOW STATUS LIKE value‘   ? 常用的参数:   ? Slow_queries 慢查询次数   ? Com_(CRUD) 操作的次数   ? Uptime 上线时间   4. 查询优化    EXPLAIN   在MySQL中可以使用EXPLAIN查看SQL执行计划,用法:EXPLAIN SELECT * FROM tb_item    结果说明    id   SELECT识别符。这是SELECT查询序列号。这个不重要。    select_type   表示SELECT语句的类型。   有以下几种值:   1、 SIMPLE   表示简单查询,其中不包含连接查询和子查询。   2、 PRIMARY   表示主查询,或者是最外面的查询语句。   3、 UNION   表示连接查询的第2个或后面的查询语句。   4、 DEPENDENT UNION   UNION中的第二个或后面的SELECT语句,取决于外面的查询。   5、 UNION RESULT   连接查询的结果。   6、 SUBQUERY   子查询中的第1个SELECT语句。   7、 DEPENDENTSUBQUERY   子查询中的第1个SELECT语句,取决于外面的查询。   8、 DERIVED   SELECT(FROM 子句的子查询)。    table   表示查询的表。    type(重要)   表示表的连接类型。   以下的连接类型的顺序是从最佳类型到最差类型:   1、 system   表仅有一行,这是const类型的特列,平时不会出现,这个也可以忽略不计。   2、 const   数据表最多只有一个匹配行,因为只匹配一行数据,所以很快,常用于PRIMARY KEY或者UNIQUE索引的查询,可理解为const是最优化的。   3、 eq_ref   mysql手册是这样说的:对于每个来自于前面的表的行组合,从该表中读取一行。   这可能   是最好的联接类型,除了const类型。它用在一个索引的所有部分被联接使用并且索引是UNIQUE或PRIMARY KEY。eq_ref可以用于使用=比较带索引
显示全部
相似文档