io模型,mysql

多路复用IO(IO multiplexing)

         多路复用就是调用select来统一管理多个连接

         强调:

         1. 如果处理的连接数不是很高的话,使用select/epoll的web server不一定比使用multi-threading + blocking IO的web server性能更好,可能延迟还更大。select/epoll的优势并不是对于单个连接能处理得更快,而是在于能处理更多的连接。

         2. 在多路复用模型中,对于每一个socket,一般都设置成为non-blocking,但是,如上图所示,整个用户的process其实是一直被block的。只不过process是被select这个函数block,而不是被socket IO给block。

         结论:select的优势在于可以处理多个连接,不适用于单个连接

 

异步IO(Asynchronous I/O)

         用户进程发起read操作之后,立刻就可以开始去做其它的事。而另一方面,从kernel的角度,当它受到一个asynchronous read之后,首先它会立刻返回,所以不会对用户进程产生任何block。然后,kernel会等待数据准备完成,然后将数据拷贝到用户内存,当这一切都完成之后,kernel会给用户进程发送一个signal,告诉它read操作完成了。

 

 

数据库

1.数据库是什么?

         数据库本质就是一个C/S的套接字软件

         常见的数据库:

                  关系型:mysql(与mariadb相似)、oracle、db2、sqlserver

                  非关系型:存取数据都是以key:value形式

                                   常见有mongodb、redis、memcache

 

2.数据库相关概念:

         数据库服务器:运行有数据库管理软件的计算机

         数据库管理软件(如mysql):一个套接字服务器

         库:就是一个文件夹

         表:就是一个文件

         记录:文件中一行内容(抽取事物一系列典型的特征拼到一起)

         数据:用于记录现实世界中的某种状态

posted @ 2018-07-18 20:48  luck_L  阅读(283)  评论(0编辑  收藏  举报