精华内容
下载资源
问答
  • 寄存器是CPU内部的存储器,用于存储等待抄处理计算的指令或数据,当然速度最快的;其次是二级缓存,由于cpu的速度快于内存,为了提高计算机的速度,设置了级、二级缓存,用于固化存储常用指令,速度其次;然后...

    寄存器是CPU内部的存储器,用于存储等待抄处理计算的指令或数据,当然速度是最快的;其次是二级缓存,由于cpu的速度快于内存,为了提高计算机的速度,设置了一级、二级缓存,用于固化存储常用指令,速度其次;然后就是内存了;最后是硬盘

     

    寄存器 > 二级缓存 > 内存 > 硬盘

    展开全文
  • 自定义二进制格式:省流量、解析速度快。缺点是不透明,写解析器麻烦,不好debug,可扩展性差。protobuf:比较重量级,生成大坨源码。学习成本高。支持编程语言有限。修改接口比较麻烦。实际应用上我是反对使用...

    服务之间交互数据有3种选择:

    • JSON格式:可读性强、可扩展、容易debug。
    • 自定义二进制格式:省流量、解析速度快。缺点是不透明,写解析器麻烦,不好debug,可扩展性差。
    • protobuf:比较重量级,生成一大坨源码。学习成本高。支持编程语言有限。修改接口比较麻烦。

    实际应用上我是反对使用protobuf,但是JSON格式在流量和解析速度上代价太大。所以我就想是否能有一个格式即有JSON格式的优点,又能省流量和解析速度快。于是诞生了jsonc项目。

    原理

    大概思路是将JSON压缩为二进制格式,这个二进制和JSON能够互转,并且不损失信息。服务端把所有已有JSON接口的前面封装一层,把JSON转为二进制格式。客户端直接解析二进制格式,而不是JSON。调试的时候把二进制转为人类可读的JSON格式。这样即拥有JSON的所有优点,数据大小减小一半,解析速度快一倍。

    实际上我只做了一个朴素的简单实现,如果进一步优化还能更快。数据大小减少除了二进制上扣字节以外。还有就是采用字符串池的形式,把重复的内容进行压缩。

    格式

    JSON格式有null、布尔型、字符串、数字、数组、对象六种类型。和JSON类似jsonc有下面几种类型:

        jc_primi = 0,
        jc_int,
        jc_float,
        jc_array,
        jc_object,
        jc_string,
        jc_ref,  //引用常量池种的数据,用来压缩

    每个类型占4bit,剩下4bit表示子类型,有下面几种:

        jc_null = 0,
        jc_true = 1,
        jc_false = 2,
        
        //const:0~10, 11:-1, 12:int8, 13:int16, 14:int32,15:int64
        jc_int8 = 12,
        jc_int16 = 13,
        jc_int32 = 14,
        jc_int64 = 15,

    如果是数字型,则子类型的4bit用来存储实际的值。

    更多的细节见https://github.com/chunquedong/jsonc

    展开全文
  • Redis是c语言开发,但在Redis中存储字符时却并未使用c字符串,而是自定义了一种字符串类型,叫做简单动态字符串(simple dynamic string, SDS)。之所以要“多此一举”,主要原因在于Redis面对是大量存取应用...

    前言

    Redis是c语言开发,但在Redis中存储字符时却并未使用c字符串,而是自定义了一种字符串类型,叫做简单动态字符串(simple dynamic string, SDS)。之所以要“多此一举”,主要原因在于Redis面对的是大量存取的应用场景,且对速度往往较为严苛。

    定义

    1. c语言的字符串就是用N+1个字符数组来存取数据,最后一个元素是空字符’\0’,如下所示:

      image-20210304183639717
    2. 而Redis中的SDS则在此基础上定义了一个数据结构,主要由三部分构成

      • 未使用空间的数量free
      • 已使用空间的数量len
      • char类型的数组(最后一个字节也是保存的空字符’\0’)
    image-20210304183726974

    下面来讲讲为啥Redis要这样定义她的字符串。

    SDS的好处

    获取字符串长度时速度更快

    • 这个好理解,c语言里没有存字符串的长度,所以在获取字符串的长度时必须遍历整个字符串

    • 而SDS里存了字符串的长度,直接获取就行了

    避免缓冲区溢出

    假设有两个字符串,name=“zhangsan”,action=“eat”。当要将action拼接到name后面时,c语言与SDS的处理方式如下

    • c语言中字符串没有记录自身长度,若name中剩余长度小于action的长度,则很有可能造成缓冲区溢出

    • 而SDS在对字符串进行修改之前,会先检查free的长度是否能满足,若太小则自动扩展到足够的大小,这样就

      杜绝了发生缓冲区溢出的可能性

    减少字符串修改时内存的重分配次数

    c语言在每次进行字符串修改(增长或缩短)操作时,必定会对内存进行重新分配。而在这一过程中有可能会产生以下两个问题:

    • 缓冲区溢出。在增长字符串时若没有对字符串进行内存重分配,则空间会不够用。
    • 内存泄漏。在缩短字符串时没有进行内存重分配以回收多余空间

    而SDS则可以减少内存重分配的次数,主要有以下两种方式:

    空间预分配

    • 这个就是在增长字符串时除了分配它所需要的长度空间之处,还多分配一点给它。

    • 比如说将action="eat"添加到name="zhangsan"后面,分配给name的空间由原来的11个字节变为6 + 6 + 11,

      总共23字节。(第一个6是action的长度,11是name的长度,另一个6则是多分配的空间)

      下次要增长的时候,如果长度小于action的长度,则不需要执行空间预分配了。

    惰性空间释放

    • 惰性空间释放的意思就是在缩短字符串时不会立即释放空间,而是留着,并把长度加给free这个属性。

    • 等到下次要增长的时候直接用就可以了。

    无论是空间预分配还是惰性空间释放,都是以一点点”内存浪费“的代价来换取保存的速度增长。

    二进制安全

    • c语言使用空字符’\0’来标识字符串是否结束。这样的话要是存二进制的数据有可能会被截断,

      所以c语言不能用来存二进制数据

    • 而SDS是用len属性来标识字符串是否结束的,所以SDS可以存二进制的数据

    兼容部分c字符串函数

    SDS里的buf数组最后也是用空字符串’\0’来结尾的,这样就能使用一部分c字符串的函数了。

    总结

    Redis要的是速度,设计SDS这种数据结构的主要目的就是提高存取速度。

    展开全文
  • 每个模块的功能实现是通过NI最先进的PXI设备技术  挑战:  开发个具有易用软件具有用户友好界面、高精度和高分辨率、多频模式、低... 可再生能源是当今世界上增长最快的市场之。能源存储技术在风能、太阳能和
  • 本报首尔电 韩国三星电子公司26日宣布,该公司已研发出一款具有世界最快图形和视频处理速度的显卡存储芯片。 据三星公司介绍,其最新推出这款GDDR显存(一种专门为图形处理开发新型内存)数据传输速率可达每秒4G...
  • 越简单越前言一直有一种说法:批量插入大量数据到MySQL数据库,不要使用Mybatis、Hibernate之类ORM框架,原因一般都是说性能不好,至于为什么不好好像没几个人能讲清楚。批量插入大量数据最优方式是什么?...

    目录

    1. 场景介绍
    2. 项目配置
    3. Mybatis为什么慢?
    4. JdbcTemplate让我眼前一亮
    5. 原生JDBC就是快啊!
    6. 存储过程怎么样?
    7. 越简单越快

    前言

    一直有一种说法:批量插入大量数据到MySQL数据库,不要使用Mybatis、Hibernate之类的ORM框架,原因一般都是说性能不好,至于为什么不好好像没几个人能讲清楚的。

    批量插入大量数据最优的方式是什么?网上也是众说纷纭。不如自己动手测试一下吧!

    场景介绍

    前几天公司项目进行压力测试,测试某个功能在大数据量(千万级)的情况下是否能够正常运行,可是项目还没有正式上线运营,数据库里只有少量开发时用的假数据。

    没有数据怎么测试啊?这可愁坏测试的小姐姐们了,向我求助让我尽快往数据库中导入1000万数据给她们测试用。

    于是接到任务:快速往MySQL数据库中导入1000万数据

    项目配置

    啥也不说了,抓紧时间开搞!

    首先交代一下电脑环境:

    • 操作系统:WIN10(专业版)
    • 开发工具:IntelliJ IDEA Ultimate(2019.2.1)
    • 项目框架:Spring Boot(2.2.5.RELEASE)
    • 数据库:MySQL(5.7.27)

    项目配置步骤:

    1. 使用IDEA的Spring Initializr插件新建Spring Boot的项目,打开pom.xml,添加一些必要的Maven依赖,主要是mybatis-spring-boot-starter和mysql-connector-java;
    48cf00a228029495574e3ab678afee6d.png
    1. MySQL中新建一张user表,为了方便演示只保留id、昵称、年龄3个字段,建表语句;
    4159dec737b72d1f2b4524f4f825f27e.png
    1. 再次打开pom.xml文件,添加mybatis generator插件用于自动生成mapper映射文件;
    80a62e989abb2e082312f66a077b6b9e.png
    1. 上一步添加了mybatis generator插件之后还不能直接使用,还需要在项目resources目录下新建一个配置文件generatorConfig.xml,里面主要需要配置数据库连接信息、Model文件生成目录、Mapper文件生成目录、以及xml文件生成目录;
    0ffb064b5b4f5011121c198e4aee7ceb.png
    1. 打开resources目录下的application.properties(或是application.yml)文件,添加一下mybatis相关配置和项目数据库连接配置;
    9ab611084ea4117ee8df06b38c4e384d.png
    1. 展示一下项目的完整结构
    6332ce74ba63b8fcb857771b8716c792.png

    Mybatis为什么慢?

    首先我们用Mybatis来测试一下,看看插入1000万条数据需要多长时间。

    实现步骤:

    1. 在UserMapper.java和UserMapper.xml文件中实现批量插入方法;
    52ef757e5ea051390e221a325dba45ea.png
    1. 新建一个Test测试类实现随机生成1000万用户记录,并调用上步已经实现的批量插入方法将数据插入到MySQL数据库;
    49573002e97e35543b6025e32fbc6406.png

    接下来就是正式测试了,没想到中间出了不少问题,在这里说明一下并附上解决方案。

    问题一:Java堆内存爆了!

    原因分析:由于要生成1000万条用户记录,需要申请大量Java的堆内存,已经超出JVM设置的最大堆内存大小,导致OutOfMemoryError报错:

    1029588f346202c974bfaadc7ca876b5.png

    解决办法:增加堆内存。

    JVM设置堆内存有两个参数:

    1. -Xms 用于设置堆内存初始值,一般建议设置为和最大值一样;
    2. -Xmx 用于设置堆内存最大值,默认值为物理内存的1/4;

    因为我的电脑是32G内存,也就是说默认最大堆内存有8G,8G都不够的话,那我直接来个20G试试,IDEA菜单栏依次打开Run -> Edit Configurations:

    修改步骤:

    1. 选中我们的测试类
    2. 在右边找到VM options选项,输入-Xms20480m -Xmx20480m
    3b251a8dfdefbdb3bd5def46c7abcd14.png

    问题二:MySQL报错:Packet for query is too large

    原因分析:因为发送到MySQL的数据量过大,超出了设置的最大值,导致报错:

    4ecbb72fa8ead81aa0bdb4951022c78e.png

    解决方案:修改MySQL服务器max_allowed_packet属性。

    修改步骤:

    1. 直接在MySQL安装目录下找到my.ini文件,在[mysqld]下面添加一行max_allowed_packet = 4G
    1. 通过MySQL客户端工具修改,这里以我常用的MySQL Workbench客户端来修改,菜单栏找到Server -> Options File,点击切换Networking标签:
    39b2f46a5463cbdf625ed8e4389ee1f3.png

    Tip:不论哪种方式,修改完都要记得重启MySQL,否则修改不生效哦。

    我们来看下执行结果:

    2a6c254a64c8aba2d64242daac3b6aa1.png

    结果:

    使用Mybatis插入1000万条数据到MySQL数据库共花费了199.8秒

    这结果是快还是慢?我们来具体分析一下耗时分布情况。

    分析:

    方法:

    JDBC驱动中有一个profileSQL属性,可以跟踪记录SQL执行时间,附上官方文档介绍:

    e4bb867c9fc6b71df378ce6dfb158841.png

    所以我们需要将数据库连接加上profileSQL=true属性。

    再次看下执行结果:

    58ac1935dad7850a8280f4c293822b65.png

    其中,duration指的是SQL执行的时间,也就是说MySQL服务器执行具体SQL语句的时间其实只有82.3秒,我们上面统计到Mybatis插入1000万条数据花了近200秒的时间,那么这中间的100多秒都干嘛去了?

    分析控制台输出的日志之后我发现了蹊跷所在:从程序调用Mybatis的批量插入方法开始,到MySQL服务器执行SQL,这中间正好差了100多秒,会是巧合吗?

    打断点Debug追踪到Mybatis解析SQL语句的方法:

    1b04c8f79fce39f6e3b56d0dd92b1a32.png

    这parse方法首先会读取我们xml文件里的SQL模版拿到参数及参数类型信息,拼接生成SQL语句。

    每条数据循环一次,那1000W条数据就要循环解析1000万次,不慢才怪!

    JdbcTemplate让我眼前一亮

    接下来使用Spring框架的JdbcTemplate来测试一下。

    实现步骤:

    1. 同样的我们新建一个测试类,并用JdbcTemplate实现一个批量插入方法;
    67ef92edd91eff3526128dfbc9c66c60.png

    接下来就可以开始测试了,果然中间又出现了了问题。

    问题一:调用JdbcTemplate的batchUpdate批量操作方法,结果却一条条的插数据?

    首先看下控制台输出日志:

    3e2ed4815980c8af157ea34cef839208.png

    可以看到JdbcTemplate是将我们的数据一条条的发送到MySQL服务器的,每个插入耗时1毫秒,那么1秒钟可以插入1000条记录,那么1000万条数据就需要10000秒,大约需要2.78个小时。

    原因分析:JDBC驱动默认不支持批量操作,会将SQL语句分拆再一条条发往MySQL服务器执行,打断点跟踪一下代码,看看是不是这样:

    5a0becb0179892219bd3629d49c8f72e.png

    分析一下代码:

    • 首先执行步骤1判断rewriteBatchedStatements属性,为false的话直接执行步骤5的逻辑:串行执行SQL语句,也就是一条条顺序执行;
    • 如果rewriteBatchedStatements为true,那么首先会执行步骤2:判断是否为insert语句,结果为true则会改写SQL执行批量插入操作;
    • 如果不是insert语句,再继续根据JDBC驱动版本以及数据量大小判断是否需要执行批量操作;

    Tip:对于非insert的批量操作语句,如果数据量小于3条,那也只会一条条顺序执行,不会进行合并批量执行。

    附上rewriteBatchedStatements官方文档:

    2e76e0233a65f27bfd19ef49a00ff353.png

    大概看了一下,跟我们上面分析的一样,标示是否让JDBC驱动使用批量模式去改写SQL语句。

    解决方案:数据库连接上加上rewriteBatchedStatements=true属性,开启批量操作支持。

    再次看下执行结果:

    d2714c4bed3dbb8bae2d07e93b5d5a34.png

    结果:

    使用JdbcTemplate插入1000万条数据到MySQL数据库共花费了80.1秒

    分析:

    一开始由于没有开启批量操作支持,所以导致MySQL只能一条条插入数据,原因在于我对JDBC驱动不够了解,看来以后还得加强学习。

    开启批量操作支持后,通过日志可以观察到真正的SQL执行时间只有67.9秒,但整个插入操作用了80.1秒,中间差的10多秒中应该就是消耗在了改写SQL语句上了。

    总得来说,JdbcTemplate批量插入大量数据的效率还不错,让我有眼前一亮的感觉。

    原生JDBC就是快啊!

    早有耳闻批量插入大量数据必须使用原生JDBC,百闻不如一见,接下来我就使用原生JDBC的方式来测试一下。

    实现步骤:

    1. 同样的,我们新建一个测试类,并使用原生JDBC的方式实现一个批量插入方法;
    b0ef94e47a2f6afa228a155ea01b3fdf.png

    接下来就可以测试了,别担心,这次肯定不会再出问题了。

    来看下执行结果:

    619946e4c56766e930d171e3d0700f22.png

    结果:使用原生JDBC的方式插入1000万条数据到MySQL数据库共花费了58.9秒

    分析:

    原生JDBC写起来还是既简单又舒适啊,都多少年没写过了,但是越是简单的东西它越好用。

    通过输出日志,我们可以看到整个方法执行时间为58.9秒,而SQL真正的执行时间为46.8秒,中间同样相差了10多秒,同样也是花在了改写SQL语句上,这一结果正好与上面JdbcTemplate的执行结果互相佐证,证明了我们的分析是正确的。

    存储过程行不行?

    最后使用存储过程的方式来试一下,说实话工作以来很少写存储过程,只好临时恶补了一波知识。

    实现步骤:

    1. 首先编写批量插入的存储过程,功能其实很简单,接收一个外部传入的表示循环次数的参数,进行循环插入数据;
    71ccdd88ef631d248757c34f7ec56a9b.png

    接下来我们调用存储过程,执行命令:

    CALL batchInsert(10000000);

    等待执行完成,看下耗时情况:

    58380c89be66b3ee91b623cba1a3a189.png

    结果:

    调用存储过程向MySQL数据库中批量插入1000万数据需要141.1秒

    分析:

    存储过程需要141.1秒的时间我还是比较惊讶的,本来我对存储过程还是比较期待的。

    仔细想想,其实存储过程用在这个场景并没有发挥出它的优势,时间长点也不奇怪。

    为什么这么说?

    首先我们来看看存储过程的一些特点:

    1. 可以封装一些复杂的业务逻辑,外部直接调用存储过程即可;
    2. 存储过程只在创建时编译一次,以后每次执行存储过程都不需再重新编译,使用存储过程可提高执行速度;
    3. 将操作直接放到数据库端执行,可以减少客户端与服务端进行网络通讯开销,提高通信效率;

    其次我们再来看看存储过程用在我们场景是否合适:

    1. 我们使一次性提交所有数据,所以不存在多次通信增加耗时的操作,在这里存储过程的优势没有发挥出来;
    2. 在存储过程的insert语句中,我们使用了concat函数来拼接字符串,函数运算会降低SQL执行效率;

    所以说存储过程在我们这个业务场景并没有发挥出它的优势。

    越简单越快

    面对快速往MySQL数据库中导入1000万数据这个问题,我们通过MybatisJdbcTemplate原生JDBC以及存储过程4种方式分别进行测试,得出了最终结果:

    插入速度:原生JDBC > JdbcTemplate > 存储过程 > Mybatis

    结果分析:

    Mybatis由于封装程度较高,底层有一个SQL模版解析和SQL拼接的过程,所以导致速度较慢;

    存储过程一来由于本应用场景不太适合没有发挥出优势,二来由于SQL语句中加入了函数运算拖累了执行效率;

    JdbcTemplate是Spring框架为了方便开发者调用对原生JDBC的一个轻度封装,虽然有点小插曲,但整体来看插入效率还可以;

    原生JDBC是最最最基础的插入方式了,每个人刚学Java的时候应该都学过,没有过多花里胡哨的封装,简单实用。

    总结:

    越简单越实用,原生JDBC第一名实至名归!

    “分享干货,收获快乐”

    我是萌新程序员小哥,喜欢我的文章欢迎 转发 及 关注,我会经常与大家分享工作当中的实用技巧与经验。

    展开全文
  • 在人工智能、云计算和大数据等前沿技术驱动下,不论是普通消费者还是企业级客户,对于存储的需求是愈加强烈。而传统存储技术相对滞后发展速度显然已经很难满足...ReRAM是一种以电阻值来记录数据非易失性存储器
  • MySQL作为常用数据库,经常遇到各种各样问题。今天要说就是表存储引擎修改。有三种方式,列表如下。...这个比第一种速度快, 安全性比第二种高,推荐。分2步操作 a.创建表,先创建一个和要操作表一样表,然
  • 不支持事务、也不支持外键,优势是访问速度快,对事务完整性没有 要求或者以select,insert为主应用基本上可以用这个引擎来创建表,支持3不同的存储格式,分别是:静态表;动态表;压缩表 静态表:表中字段都...
  • java种存储区域

    2012-02-25 17:47:10
    寄存器:在cpu内部,速度最快,程序员不能通过编程来控制寄存器分配,由编译器自动分配。 栈:栈是向低地址扩展数据结构,是一种连续内存区域。 优点:由系统自动分配,速度较快。 缺点:数据生命周期...
  • 本文档介绍了一种稳定自适应混合基数/合并排序,名为Wolfsort。 为什么要混合动力? 尽管自适应合并排序在排序有序数据方面非常,但它无法有效分区是其最大弱点。另一方面,基数排序无法利用排序后数据。 ...
  • 如果编程语言是一门武功绝学,各语言分别是哪门武功绝学呢?...采用它编写的程序具有存储空间占用少、执行速度快的特点,这些是高级语言所无法取代的。通常用在底层的程序优化,硬件操作或嵌入式编程的场合,已经
  • 读了很多年书,都没有系统整理自己方法。今后要补齐。 2019/8/26 回家地铁 方法分析 时间是读书最大成本,实践是衡量价值唯一标准,体系化是最有效手段(有深度、有广度、有维度)。...集中兵力最快速度
  • 在模式识别领域中,K - 近邻算法(K-Nearest Neighbor, KNN)是一种用于分类和回归非参数统计方法。K - 近邻算法非常简单而有效,它模型表示就是整个训练数据集。就原理而言,对新数据点预测结果是通过在整个...
  • LeetHub-自动将您代码同步到GitHub。 排名前5位JavaScript存储库 适用于: 什么是LeetHub? 当您通过所有针对问题测试时,Chrome扩展程序会自动将您代码推送到GitHub...没有一种简单方法可以一处解决您leetc
  • Redis---存储与读取java对象(

    千次阅读 2018-11-14 16:18:49
    、Redis是什么?...最重要的一点是Redis存储和读取数据的速度及效率更高,曾听位大“湿”说过,Redis是目前最快的数据库。最后Redis只支持五数据类型:string(字符串),hash(哈希),list(列表...
  • 浏览器本地存储方法

    千次阅读 2016-05-23 00:05:07
    浏览器本地存储一种在浏览器中长久保存数据方法,可以说为本地数据持久化,在我们刷新页面,或者同域名内页面跳转之后仍然可以将数据保留,对于服务器来说存储的压力小了,对用户来说,会感觉相应速度了,...
  • 面试问到mysql搜索引擎,下子就懵了,回来慌忙补习波@!...特点:支持自动增长列,支持外键约束(2)mylsam不支持事务、也不支持外键,优势是访问速度快,对事务完整性没有 要求或者以select,insert为主应用...
  • 前言Redis是目前火爆的内存数据库之一,通过在内存中读写数据,大大提高了读写速度,可以说Redis是实现网站高并发不可或缺的一部分。我们使用Redis时,会接触Redis的5对象类型(字符串、哈希、列表、集合、有序...
  • 存储之间的层级结构 如下图: ...Cache是除CPU之后,其次最快的一种存储器,故名思意翻译成中文是:缓存,所以该存储器,存储的内容来自于内存。 其作用是,CPU读取数据时,优先从Cache中读取,如果...
  • mysql的存储引擎有4:MyISAM:mysql存储引擎,简单快速,不支持事务,数据限制也较多。InnoDB:在线事务处理主力存储引擎,支持事务,目前mysql默认引擎。memory:说白了就是内存数据库,更加简单快速,...
  • 笔者最近工作中遇见个性能瓶颈问题,MySQL表,每天大概新增776万条记录,存储周期为7天,超过7天数据需要在新增记录前老化。连续运行9天以后,删除数据大概需要3个半小时(环境:128G, 32核,4T硬盘),而...
  • 1991年,IBM公司在S/390服务器中推出了ESCON(Enterprise System Connection)技术,它是基于光纤介质,最大传输速率达17MB/s的服务器访问存储器的一种连接方式。在此基础上,进一步推出了功能更强的ESCON Director...
  • 这篇文章要达到的目的就是,实现大数据分页浏览并优化速度。 建立一个web 应用,分页浏览功能必不可...也有编写存储过程实现分页数据,这些方面各有优缺点,以下本人介绍一种应用实际项目中速度非常快的分页算法;...
  • SD存储卡U和A代表意义

    千次阅读 2020-01-07 04:27:00
    A1是个速度标准,速度接近U1,其中U3速度最快,A1,U1,Class10速度差距不大。该速度是内存卡最低写入速度,实际速度受使用设备影响。 U代表UHS意思是“超高速(Ultra High Speed)”,“UHS速度等级”以最低...
  • 存储技术简要介绍

    2020-07-05 20:39:55
    存储需要有最快的速度,但容量很小。cache作为cpu缓存,使用最快的SRAM电路实现,通过把主存中的数据拷贝到cache中,提高cup的访问速度。cache中需要的最关键技术就是地址的映射问题,有三方法直接映射、全...
  • MySQL数据库中,常用引擎是InnoDB和MyISAM。InnoDB是MySQL默认存储引擎。 、事务处理上方面 MyISAM强调是性能,查询的速度比InnoDB类型更,但是不提供事务支持,InnoDB提供事务支持事务。 二、...
  • C#二十六 使用Ado.Net调用存储过程

    千次阅读 2016-05-07 19:05:41
    存储过程是连接式访问数据库的一种延伸,主要是通过命令对象调用数据库系统中的存储过程来完成的。存储过程可以带参数,也可以不带参数,可以返回结果页可以没有返回结果。存储过程执行速度快、允许模块化程序设计...
  • 选择“标星公众号”优质文章,第一时间送达来源:java学习“ Redis 是目前火爆的内存数据库之一,通过在内存中读写数据,大大提高了读写速度,可以说 Redis 是实现网站高并发不可或缺的一部分。我们使用 Redis 时...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,177
精华内容 470
关键字:

存储速度最快的一种是