SinoDB中关于NETTYPE参数的理解与探讨

        SinoDB中的NETTYPE参数,是用于指定客户端和服务器之间的网络连接类型,NETTYPE 参数定义了网络连接所使用的协议和通信方式。NETTYPE的格式定义如下:
NETTYPE ,<# poll threads>,<number of connections/thread>,(NET|CPU)
        例如:
        NETTYPE onsoctcp,3,250,NET

        通常情况下,我们理解的数据库最大并发用户数=poll threads * number of connections/thread。那么poll threads是做什么用的呢?客户端在发送数据库连接请求时,数据库提供poll threads来接收客户端的请求,在接收请求后会转给listener thread,listener thread负责判断该会话是否建立过,如果已经建立了,那么就重用原来的连接信息;如果没有建立过,listener thread负责新建连接信息。在完成连接建立后,poll threads就释放了。从中我们可以得到启示,poll threads * number of connections/thread其实并不能代表数据库允许的最大并发数。

        poll threads是负责接收客户端的请求,那么在大并发连接数据库的情况下,就需要考虑poll threads的效率了。可以通过增加poll threads的数量,增加NUMFDSERVERS参数的值,来提高大并发的连接效率。这是因为在NETTYPE 和 NUMFDSERVERS之间有一定的相关性,当有多个CPU VP和poll thread时,会有网络共享文件的锁(NSF)争用。此时可以增加NUMFDSERVERS的值以减少NSF的锁争用,这样就能提高连接数据库的效率,缩短连接时间。