案例10:mem 100%场景优化 | 学习笔记

简介: 简介:快速学习案例10:mem 100%场景优化

开发者学堂课程【云数据库优化十大典型案例:案例10:mem 100%场景优化】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/597/detail/8569


案例10:mem 100%场景优化

 

内容介绍

一、 内存组成

二、 Buffer pool size

三、 Thread cost memory

四、 Dictionary memory


一、内存组成

内存使用完,要关注内存的使用。有些情况下,很多用户提出疑问,数据盘占用率达到了90%85%是不是正常的,其实大部分情况下都是正常的,因为数据的总容量是大于内存的容量的,比如数据是200GB,活跃的数据是50GB,内存是16GB,内存占用率肯定会到80%90%,deter配置参数默认参数是75%,deter配置超过75%时候,会把专业内存压缩到磁盘里,尽量维持到90%都是正常的。

内存组成:Buffer pool size ,Dictionary memory,Thread cost memory

image.png


二、Buffer pool size

1. 创建合适的索引,避免大量的数据描写

2. 去除不必要的索引,降低内存的消耗

数据索引主要在这里消耗,因为所有的插入、更新、删除的数据,都会把相对应的数据页读到数据里,同时更新相对应的索引页,大部分的 Buffer pool size 被数据、索引占用,比如 sql 没有全盘扫描,存储大量无效数据。因为没有索引,必须把所有的数据页存在索引里,Buffer pool 就会被大量无效的数据所占满,需要创建相应的索引。同时表上有大量不必要的索引,更新插入的时候,更新索引必须要把索引读到内存当中去,这个时候 Buffer pool 的使用率就很低,之前所说的到优化原理都适合在内存优化当中。


三、Thread cost memory

1. 创建合适的索引避免排序

2. 只查询应用所需要的数据

Buffer 这些都是每个线程连接到数据库初始化分配的,每个线程比如 Stringbuffer、Thread 都是每个线程连接到数据库都是要初始化重新分配的,每个线程所发出来的查询没有合适的索引,或者说查询的数据很多,每个线程消耗的内存也是很大的,所以要控制每个线程消耗的内存。

 

四、Dictionary memory

1. 不要过度分表

Dictionary memory 最大可以占据 Buffer pool 的一半,不要过度的分表,分表的目的就是降低不必要的时间,需要合理的设计表结构。这个是在内存最佳实践的一个总结。

相关文章
|
12月前
|
SQL 关系型数据库
[翻译]利用pg_stat_statments分析业务瓶颈
[翻译]利用pg_stat_statments分析业务瓶颈
83 0
|
12月前
|
存储 缓存 BI
|
数据库 开发者 索引
mem 100%场景优化|学习笔记
快速学习 mem 100%场景优化
92 0
mem 100%场景优化|学习笔记
|
缓存 Unix Linux
记一次探索内存cache优化之旅
本文先介绍文件的LINUX 内存和 page cache 机制,并介绍应用程序级的管理方法,最后介绍针对 应用的内存优化实践。
2291 17
记一次探索内存cache优化之旅
|
SQL 运维 前端开发
CPU 100%场景优化|学习笔记
快速学习 CPU 100%场景优化
83 0
CPU 100%场景优化|学习笔记
|
SQL 运维 数据库
案例6:CPU 100%场景优化 | 学习笔记
简介:快速学习案例6:CPU 100%场景优化
124 0
案例6:CPU 100%场景优化 | 学习笔记
|
数据库 开发者 索引
案例9:disk 100%场景优化 | 学习笔记
简介:快速学习案例9:disk 100%场景优化
60 0
案例9:disk 100%场景优化 | 学习笔记
|
存储 缓存 Ubuntu
性能测试必备知识(11)- 怎么理解内存中的Buffer和Cache?
性能测试必备知识(11)- 怎么理解内存中的Buffer和Cache?
361 0
性能测试必备知识(11)- 怎么理解内存中的Buffer和Cache?
|
缓存 测试技术 Linux
性能测试必备命令(1)- free
性能测试必备命令(1)- free
77 0
性能测试必备命令(1)- free
|
存储 缓存 算法