磁盘常识

查询数据:

  • linux
    • grep
    • awk
  • 磁盘存储数据
    • IO读取
    • 全量IO扫描,分而治之思维
    • SAP HANA内存关系型数据库
  • mysql,结构化的数据
    • 数据库为什么比磁盘快?
    • 索引,索引消耗的空间
    • schema,类型,就是大小
    • B+tree
      • 树干在内存
      • 叶子节点在磁盘
    • 数据库的表变得越来越大
      • 如果是简单查询,查询速度依然很快;
        • 高并发场景下,查询也是受到磁盘IO的影响
      • 增删改,会受到表的越大,写入速度越慢;数据越大,建立的索引也就越大
  • redis

redis为什么快

  • mysql并发 1200/s
  • MongoDB并发 1.6万/s
  • redis并发 8万/s
  1. 磁盘寻址,毫秒 ms
    1. 秒,毫秒,微妙,纳秒
    2. 文件放在磁盘的扇区里面,就要用磁头去寻址
  2. 带宽
    1. 每秒读取的数据量,每秒,百兆
    2. 文件越来越来,会有一个 全量的 IO读取,就会很慢
  3. 内存,纳秒
    1. 数据在内存里面,比在磁盘里面快了近 10万倍
    • 应用层,有逻辑地址
      • 应用层对象的地址是虚拟地址,可以同时指向一个物理地址
      • 地址映射关系,即指针,可以节省空间
    • 物理层,有物理地址

为什么是 key,value的数据格式

  • sql有数据约束,数据的完整性约束

redis是单线程

redis业务处理是单线程
IO线程

  1. tail -f

IO线程

BIO
NIO,不阻塞
epoll 多路复用