基于成都市出租车轨迹的PostgreSQL空间检索性能测试
背景
为了测试PostgreSQL
和PostGIS
在大数据量下,对轨迹检索的性能,做了此次测试。
滴滴的轨迹数据已经不提供了下载连接,所以无法下载到。从网上搜索后,发现能下载到成都市2014年8月份的出租车轨迹数据,此数据集比较大,共12亿条左右,压缩后为6.7 GB左右。此次仅测试在1亿数据量的条件下,检索轨迹的性能,所以只使用了其中2天的数据,数据量为1.079亿条:
为了测试PostgreSQL
和PostGIS
在大数据量下,对轨迹检索的性能,做了此次测试。
滴滴的轨迹数据已经不提供了下载连接,所以无法下载到。从网上搜索后,发现能下载到成都市2014年8月份的出租车轨迹数据,此数据集比较大,共12亿条左右,压缩后为6.7 GB左右。此次仅测试在1亿数据量的条件下,检索轨迹的性能,所以只使用了其中2天的数据,数据量为1.079亿条:
前两篇分别介绍了IO多路复用的select()
和poll()
。
select()
解决了传统的网络编程中,一个线程只能服务一个客户端连接的问题,但是最多只能同时监听1024个文件描述符,并且效率比较低。poll()
解决了select()
监听文件描述符个数限制的问题,但是并没有解决效率的问题。本篇介绍epoll()
,既解决了描述符个数限制的问题,又解决了效率问题。
前一篇介绍了IO多路复用中的select()
,但是select()
的缺点很明显,监控描述符的个数不能超过1024个,所以后来为了解决这个问题,引入了poll()
,理论上poll()
监听的描述符个数不受限制,但是实际能监控的描述符个数和机器自身的硬件配置有关系。
在Linux
系统下,select()
为最早支持IO多路复用的系统调用。该接口相比poll()
、epoll()
来说,更为简单,但是效率较低,而且最大只支持FD_SETSIZE
(1024)个描述符。如果对并发数量的要求高于1024,请考虑使用poll()
或者epoll()
。