zoukankan      html  css  js  c++  java
  • 【测试验证】数据库加载到内存占用大小

    介绍

        数据库大小加载到内存占用是不是数据库的本身大小哪?今天忽然突发奇想于是就测试一下。首先我要说明的是我是在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

  • 相关阅读:
    通过internet网络唤醒主机的方法
    信用风险计量模型
    Vintage、滚动率、迁移率的应用
    (信贷风控十五)评分卡分数切分、授信额度与利率定价
    (信贷风控十)催收评分卡的介绍
    (信贷风控十六)组合评分卡模型
    (信贷风控十四)深度神经网络模型用于评分卡模型(理论)
    (十三)GBDT模型用于评分卡模型python实现
    (信贷风控九)行为评分卡模型python实现
    改变jupyter notebook的主题背景
  • 原文地址:https://www.cnblogs.com/yanbigfeg/p/9072960.html
Copyright © 2011-2022 走看看