【测试验证】数据库加载到内存占用大小

简介: 介绍     数据库大小加载到内存占用是不是数据库的本身大小哪?今天忽然突发奇想于是就测试一下。首先我要说明的是我是在EF框架下进行测试的,不知道会不会与ado.net连接方式差生不同的结果,我仅仅是做记录,若有不足还请海涵。

介绍

    数据库大小加载到内存占用是不是数据库的本身大小哪?今天忽然突发奇想于是就测试一下。首先我要说明的是我是在EF框架下进行测试的,不知道会不会与ado.net连接方式差生不同的结果,我仅仅是做记录,若有不足还请海涵。

说明

    大家都知道获取占用大小字节我们都用sizeof方法。但是此方法仅仅适用于值类型。而不能适用于引用类型。引用类型我们使用Marshal.SizeOf方法,但是也仅仅是非托管的引用,托管对象没有办法获取,所有我就用了垃圾回收来做了测试,可能测试也是存在误差的。

    若想了解sizeof相关信息请参阅:https://www.cnblogs.com/supperwu/archive/2013/05/16/3082061.html 他已经说的很明白我就不多哔哔了。

代码内容:

    别的不多少了,也不是啥技术示例,上代码就完事了。以下是我使用的测试代码:

 Stopwatch stopWatch = new Stopwatch();
                stopWatch.Start();
                GC.Collect();
                GC.WaitForFullGCComplete();
                long start = GC.GetTotalMemory(true);

                EFHelp<TimeRecord> eFHelp = new EFHelp<TimeRecord>();
                var data = eFHelp.Entities.ToList();

                GC.Collect();
                GC.WaitForFullGCComplete();
                long end = GC.GetTotalMemory(true);
                long size = end - start;
                Console.WriteLine("所占内存大小:" + size);

                //SelectData();
                //AddData();
                //AddRang();
                Console.WriteLine("最终运行时间" + stopWatch.ElapsedMilliseconds + " ms.");

我的思路是首先使用垃圾回收回收一遍然后回去开始字节值,然后从数据库读取数据加载到内存,加载完成之后再次使用回收获取结束值。取两次的差,但是我在这了做了一个减法没有体现,就是我在得到的这个值后减去了11M因为我通过诊断工具大致可以得到有11M是运行起来的内存值,所有尽量避免误差就减去了这一部分数值后才得到下面结果中的内存占用大小。

数据库大小查看对比位置:

最后在上一下几个测试数据:

数据量

数据库储存大小

内存占用大小

比例

5万

4.6M

20M

4.3

10万

13.6M

49M

3.6

15万

22.8M

75.9M

3.3

20万

29.9M

108M

3.6

25万

37.7M

144.7M

3.8

30万

43.5M

171.6M

3.9

作者:YanBigFeg —— 颜秉锋

出处:http://www.cnblogs.com/yanbigfeg

本文版权归作者和博客园共有,欢迎转载,转载请标明出处。如果您觉得本篇博文对您有所收获,觉得小弟还算用心,请点击右下角的 [推荐],谢谢!

目录
相关文章
|
2月前
|
机器学习/深度学习 PyTorch 算法框架/工具
目标检测实战(一):CIFAR10结合神经网络加载、训练、测试完整步骤
这篇文章介绍了如何使用PyTorch框架,结合CIFAR-10数据集,通过定义神经网络、损失函数和优化器,进行模型的训练和测试。
130 2
目标检测实战(一):CIFAR10结合神经网络加载、训练、测试完整步骤
|
13天前
|
并行计算 算法 测试技术
C语言因高效灵活被广泛应用于软件开发。本文探讨了优化C语言程序性能的策略,涵盖算法优化、代码结构优化、内存管理优化、编译器优化、数据结构优化、并行计算优化及性能测试与分析七个方面
C语言因高效灵活被广泛应用于软件开发。本文探讨了优化C语言程序性能的策略,涵盖算法优化、代码结构优化、内存管理优化、编译器优化、数据结构优化、并行计算优化及性能测试与分析七个方面,旨在通过综合策略提升程序性能,满足实际需求。
37 1
|
29天前
|
C# Windows
【Azure App Service】在App Service for Windows上验证能占用的内存最大值
根据以上测验,当使用App Service内存没有达到预期的值,且应用异常日志出现OutOfMemory时,就需要检查Platform的设置是否位64bit。
41 11
|
2月前
|
机器学习/深度学习 JSON 算法
实例分割笔记(一): 使用YOLOv5-Seg对图像进行分割检测完整版(从自定义数据集到测试验证的完整流程)
本文详细介绍了使用YOLOv5-Seg模型进行图像分割的完整流程,包括图像分割的基础知识、YOLOv5-Seg模型的特点、环境搭建、数据集准备、模型训练、验证、测试以及评价指标。通过实例代码,指导读者从自定义数据集开始,直至模型的测试验证,适合深度学习领域的研究者和开发者参考。
702 3
实例分割笔记(一): 使用YOLOv5-Seg对图像进行分割检测完整版(从自定义数据集到测试验证的完整流程)
|
1月前
|
存储 关系型数据库 MySQL
查询服务器CPU、内存、磁盘、网络IO、队列、数据库占用空间等等信息
查询服务器CPU、内存、磁盘、网络IO、队列、数据库占用空间等等信息
348 2
|
2月前
|
缓存 监控 Java
在使用 Glide 加载 Gif 动画时避免内存泄漏的方法
【10月更文挑战第20天】在使用 Glide 加载 Gif 动画时,避免内存泄漏是非常重要的。通过及时取消加载请求、正确处理生命周期、使用弱引用、清理缓存和避免重复加载等方法,可以有效地避免内存泄漏问题。同时,定期进行监控和检测,确保应用的性能和稳定性。需要在实际开发中不断积累经验,根据具体情况灵活运用这些方法,以保障应用的良好运行。
|
2月前
|
机器学习/深度学习 JSON 算法
语义分割笔记(二):DeepLab V3对图像进行分割(自定义数据集从零到一进行训练、验证和测试)
本文介绍了DeepLab V3在语义分割中的应用,包括数据集准备、模型训练、测试和评估,提供了代码和资源链接。
255 0
语义分割笔记(二):DeepLab V3对图像进行分割(自定义数据集从零到一进行训练、验证和测试)
|
2月前
|
机器学习/深度学习 算法 PyTorch
目标检测实战(五): 使用YOLOv5-7.0版本对图像进行目标检测完整版(从自定义数据集到测试验证的完整流程)
本文详细介绍了使用YOLOv5-7.0版本进行目标检测的完整流程,包括算法介绍、环境搭建、数据集准备、模型训练、验证、测试以及评价指标。YOLOv5以其高精度、快速度和模型小尺寸在计算机视觉领域受到广泛应用。
781 0
目标检测实战(五): 使用YOLOv5-7.0版本对图像进行目标检测完整版(从自定义数据集到测试验证的完整流程)
|
2月前
|
测试技术 Python
自动化测试项目学习笔记(三):Unittest加载测试用例的四种方法
本文介绍了使用Python的unittest框架来加载测试用例的四种方法,包括通过测试用例类、模块、路径和逐条加载测试用例。
84 0
自动化测试项目学习笔记(三):Unittest加载测试用例的四种方法
|
2月前
|
缓存 数据挖掘 测试技术
目标检测实战(三):YOLO-Nano训练、测试、验证详细步骤
本文介绍了YOLO-Nano在目标检测中的训练、测试及验证步骤。YOLO-Nano是一个轻量级目标检测模型,使用ShuffleNet-v2作为主干网络,结合FPN+PAN特征金字塔和NanoDet的检测头。文章详细说明了训练前的准备、源代码下载、数据集准备、参数调整、模型测试、FPS测试、VOC-map测试、模型训练、模型测试和验证等步骤,旨在帮助开发者高效实现目标检测任务。
59 0
目标检测实战(三):YOLO-Nano训练、测试、验证详细步骤