为什么要使用内存数据库
数据库整合网站: https://db-engines.com/en/
基础选型、技术对比
磁盘 | 内存 |
---|---|
寻址:ms | 寻址:ns |
带宽: G/M | 带宽: 字节/秒 |
IO buffer:
成本问题磁盘与磁道、 扇区,一扇区512Byte带来一个成本变大, 索引4K 操作系统,无论你读多少,
都是最少4K从磁盘读取。
磁盘不一定固定片大小为4K, 取决于上层应用访问数据的量,4K只是支持你的使用,并且不会太浪费,也可以一些小的
文件,访问的数据量大的话可以将4k扩大些,减少访问数据量和磁头的寻址时间。
磁盘的大小取决于上层应用是I/O密集型的,还是读写小的文件,有时间情况决定。
关系型数据库:
数据库中的数据在查询时,B+T将索引读入内存中,索引指向对应的数据,将数据读入内存进行查询。
B+TREE存储引擎对索引的是顺序存储。
B+TREE的索引会包含被索引的列的数据(看懂到这个我瞬间明白了,select * 为会被不建议了,因为这样会使用不到索引,被覆盖)
关系行数据库建表; 必须给出schema (类型长度)
类型: 字节宽度
存储: 倾向于行级存储 比如(一个表十个字段,即使一行只有一个字段插入值,这行大小也是占十个字段的大小)
数据在磁盘中和内存中的体积不一样,磁盘中的2G在内存中可能只有1G多。
数据库: 表很大,性能下降?
如果表有索引,增删改变慢
查询速度是否下降?
1个或少量查询依然很快,并发大的时候会受磁盘带宽影响速度
由此引出折中的方法,利用缓存存储数据
memcached redis(redis可达10w并发量)
计算机依赖的基础设施:
1、冯诺依曼的硬件体系
2、以太网、TCP/IP的网络