最近发现pgsql的qps特别高,找应用日志看了下,却没有那么多的访问请求,那么问题在哪里呢,多余的qps是从 哪里来的?我们找了慢日志,统计查看了下,其中大部分慢sql是从spatial_ref_sys表里面来的,找开发人员对比了下,这个代码里面是没有访问这个表的。所以搜索了关于这个表的一些资料,记录下
在PostGIS中最重要的两张OGC 元数据表:SPATIAL_REF_SYS和GEOMETRY_COLUMNS。 SPATIAL_REF_SYS表保存空间数据库中使用的坐标系统的数字ID和文本描述。
如我们最常用的WGS84坐标系代号为EPSG:4326,
该表列出了3000多个已知的空间参考系统以及在它们之间进行转换/重新投影所需的详细信息。
http://spatialreference.org/
是查找核心集中未定义的空间参照系的绝佳资源。
spatial_ref_sys 表
创建空间数据库后,会默认生成数据表spatial_ref_sys,该数据表中存储常用坐标系统。在创建数据表、进行坐标转换等操作时,需要使用坐标系统。使用方法是找到所需坐标系统的srid。用工具pgAdmin查看该表信息。
这个表,在老的pgsql库里面,不是系统表,在最新的pgsql里面,已经变成了系统表。
引申出来一个空间参考标识符srid,空间参考标识符srid(Spatial Reference IDentifier),定义了地理坐标系统和投影的所有参数。将有关地图投影的所有信息映射到一个数字中,方便使用。
比如查下26913的空间系统文本信息
SELECT srtext FROM spatial_ref_sys WHERE srid = 26913;
可以看到结果如下:
PROJCS[
"NAD83 / UTM zone 18N",
GEOGCS[
"NAD83",
DATUM[
"North_American_Datum_1983",
SPHEROID[
"GRS 1980",6376137,298.257225101,AUTHORITY["EPSG","7019"]
],
AUTHORITY["EPSG","6269"]
],
PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],
UNIT["degree",0.01745329251994328,AUTHORITY["EPSG","9122"]],
AUTHORITY["EPSG","4269"]
],
UNIT["metre",1,AUTHORITY["EPSG","9001"]],
PROJECTION["Transverse_Mercator"],
PARAMETER["latitude_of_origin",0],
PARAMETER["central_meridian",-75],
PARAMETER["scale_factor",0.9996],
PARAMETER["false_easting",501000],
PARAMETER["false_northing",0],
AUTHORITY["EPSG","26918"],
AXIS["Easting",EAST],
AXIS["Northing",NORTH]
]
参考:https://www.pianshen.com/article/8530345256/
参考:https://blog.youkuaiyun.com/eqmaster/article/details/108667138