MySQL5.6空间扩展(原创)

MySQL空间扩展

MySQL空间扩展支持几何数据的存储,生成,分析,优化。

1、空间数据类型(存储)

MySQL支持以下数据类型:

Geometry:可以存储所有的几何类型

Point:简单点

LINESTRING:简单线

POLYGON:简单面

MULITIPOINT:多点

MULITILINESTRING:多线

MUILITIPOLYGON:多面

GEOMETRYCOLLECTION:任何几何集合

在创建表的时候可以根据需求选择合适的几何类型存储你的空间数据。

2、空间数据类型的生成

MySQ L支持WKB,WKT数据生成空间数据类型,提供如下函数:

GeomFromText(wtk [,srid)   PointFromText    LINESTRINGFROMTEXT ......

GeomFromWKB(wtk [,srid)   GeomFromWKB  GeomFromWKB ......

3、空间运算分析

MYSQL以函数的形式提供对空间运算的支持:

ST_Buffer    ST_Contains   ST_Distance  ST_Intersects   MBRIntersects ........

4、优化

为了优化查询,MySQL提供空间索引支持,目前仅在MyISAM数据引擎下提供空间索引支持

创建空间索引格式如下:

CREATE SPATIAL INDEX t_geo_test_sidx ON t_geo_test(SHAPE);

可以看到比普通索引多了一个关键字 Spatial,删除空间索引的语句与删除普通索引的语句是一样的。

5、测试

建表:

CREATE TABLE t_geo_test  (

`ID`  int(11) NOT NULL ,

`SHAPE`  geometry NOT NULL ,

PRIMARY KEY (`ID`)

)

ENGINE=MyISAM

DEFAULT CHARACTER SET=utf8 COLLATE=utf8_general_ci

CHECKSUM=0

ROW_FORMAT=DYNAMIC

DELAY_KEY_WRITE=0

;

插入数据:

insert into t_geo_test select fid,geomfromtext(shape) from zjgis.g_bd_substation_p;

查询:

通过SQL解释可以看到TYPE:ALL KEY:NULL 代表全表扫描

建索引:

CREATE SPATIAL INDEX t_geo_test_sidx ON t_geo_test(SHAPE);

可以看到TYPE:range KEY:t_geo_tesx_sidx 表示使用了空间索引t_geo_tesx_sidx

在数据量比较大的时候,空间索引至关重要。

建索引前查询时间:

建索引后查询时间:

虽然数据不多(3500左右),查询耗时还是有所差距的。

6、附:MySQL空间相关函数一览表

The following table lists each spatial function and provides a short description of each one.

Name    Description

1、Area() Return Polygon or MultiPolygon area

2、AsBinary(), AsWKB() Convert from internal geometry format to WKB

3、AsText(), AsWKT() Convert from internal geometry format to WKT

4、Buffer() Return geometry of points within given distance from geometry

5、Centroid() Return centroid as a point

6、Contains() Whether MBR of one geometry contains MBR of another

7、Crosses() Whether one geometry crosses another

8、Dimension() Dimension of geometry

9、Disjoint() Whether MBRs of two geometries are disjoint

10、EndPoint() End Point of LineString

11、Envelope() Return MBR of geometry

12、Equals() Whether MBRs of two geometries are equal

13、ExteriorRing() Return exterior ring of Polygon

14、GeomCollFromText(),

15、GeometryCollectionFromText()

16、Return geometry collection from WKT

17、GeomCollFromWKB(),

18、GeometryCollectionFromWKB()

19、Return geometry collection from WKB

20、GeometryCollection() Construct geometry collection from geometries

21、GeometryN() Return N-th geometry from geometry collection

22、GeometryType() Return name of geometry type

23、GeomFromText(),

24、GeometryFromText()

25、Return geometry from WKT

26、GeomFromWKB(),

27、GeometryFromWKB()

28、Return geometry from WKB

29、GLength() Return length of LineString

30、InteriorRingN() Return N-th interior ring of Polygon

31、Intersects() Whether MBRs of two geometries intersect

32、IsClosed() Whether a geometry is closed and simple

33、IsEmpty() Placeholder function

34、IsSimple() Whether a geometry is simple

35、LineFromText(),

36、LineStringFromText()

37、Construct LineString from WKT

38、LineFromWKB(),

39、LineStringFromWKB()

40、Construct LineString from WKB

41、LineString() Construct LineString from Point values

42、MBRContains() Whether MBR of one geometry contains MBR of another

43、MBRDisjoint() Whether MBRs of two geometries are disjoint

44、MBREqual() Whether MBRs of two geometries are equal

45、MBRIntersects() Whether MBRs of two geometries intersect

46、MBROverlaps() Whether MBRs of two geometries overlap

47、MBRTouches() Whether MBRs of two geometries touch

48、MBRWithin() Whether MBR of one geometry is within MBR of another

49、MLineFromText(),

50、MultiLineStringFromText()

51、Construct MultiLineString from WKT

52、MLineFromWKB(),

53、MultiLineStringFromWKB()

54、Construct MultiLineString from WKB

55、MPointFromText(),

56、MultiPointFromText()

57、Construct MultiPoint from WKT

58、MPointFromWKB(),

59、MultiPointFromWKB()

60、Construct MultiPoint from WKB

61、MPolyFromText(),

62、MultiPolygonFromText()

63、Construct MultiPolygon from WKT

64、MPolyFromWKB(),

65、MultiPolygonFromWKB()

66、Construct MultiPolygon from WKB

67、MultiLineString() Contruct MultiLineString from LineString values

68、MultiPoint() Construct MultiPoint from Point values

69、MultiPolygon() Construct MultiPolygon from Polygon values

70、NumGeometries() Return number of geometries in geometry collection

71、NumInteriorRings() Return number of interior rings in Polygon

72、NumPoints() Return number of points in LineString

73、Overlaps() Whether MBRs of two geometries overlap

74、Point() Construct Point from coordinates

75、PointFromText() Construct Point from WKT

76、PointFromWKB() Construct Point from WKB

77、PointN() Return N-th point from LineString

78、PolyFromText(),

79、PolygonFromText()

80、Construct Polygon from WKT

81、PolyFromWKB(), PolygonFromWKB() Construct Polygon from WKB

82、Polygon() Construct Polygon from LineString arguments

83、SRID() Return spatial reference system ID for geometry

84、ST_Area() Return Polygon or MultiPolygon area

85、ST_AsBinary(), ST_AsWKB() Convert from internal geometry format to WKB

86、ST_AsText(), ST_AsWKT() Convert from internal geometry format to WKT

87、ST_Buffer() Return geometry of points within given distance from geometry

88、ST_Centroid() Return centroid as a point

89、ST_Contains() Whether one geometry contains another

90、ST_Crosses() Whether one geometry crosses another

91、ST_Difference() Return point set difference of two geometries

92、ST_Dimension() Dimension of geometry

93、ST_Disjoint() Whether one geometry is disjoint from another

94、ST_Distance() The distance of one geometry from another

95、ST_EndPoint() End Point of LineString

96、ST_Envelope() Return MBR of geometry

97、ST_Equals() Whether one geometry is equal to another

98、ST_ExteriorRing() Return exterior ring of Polygon

99、ST_GeomCollFromText(),

100、ST_GeometryCollectionFromText(),

101、ST_GeomCollFromTxt()

102、Return geometry collection from WKT

103、ST_GeomCollFromWKB(),

104、ST_GeometryCollectionFromWKB()

105、Return geometry collection from WKB

106、ST_GeometryN() Return N-th geometry from geometry collection

107、ST_GeometryType() Return name of geometry type

108、ST_GeomFromText(),

109、ST_GeometryFromText()

110、Return geometry from WKT

111、ST_GeomFromWKB(),

112、ST_GeometryFromWKB()

113、Return geometry from WKB

114、ST_InteriorRingN() Return N-th interior ring of Polygon

115、ST_Intersection() Return point set intersection of two geometries

116、ST_Intersects() Whether one geometry intersects another

117、ST_IsClosed() Whether a geometry is closed and simple

118、ST_IsEmpty() Placeholder function

119、ST_IsSimple() Whether a geometry is simple

120、ST_LineFromText(),

121、ST_LineStringFromText()

122、Construct LineString from WKT

123、ST_LineFromWKB(),

124、ST_LineStringFromWKB()

125、Construct LineString from WKB

126、ST_NumGeometries() Return number of geometries in geometry collection

127、ST_NumInteriorRing(),

128、ST_NumInteriorRings()

129、Return number of interior rings in Polygon

130、ST_NumPoints() Return number of points in LineString

131、ST_Overlaps() Whether one geometry overlaps another

132、ST_PointFromText() Construct Point from WKT

133、ST_PointFromWKB() Construct Point from WKB

134、ST_PointN() Return N-th point from LineString

135、ST_PolyFromText(),

136、ST_PolygonFromText()

137、Construct Polygon from WKT

138、ST_PolyFromWKB(),

139、ST_PolygonFromWKB()

140、Construct Polygon from WKB

141、ST_SRID() Return spatial reference system ID for geometry

142、ST_StartPoint() Start Point of LineString

143、ST_SymDifference() Return point set symmetric difference of two geometries

144、ST_Touches() Whether one geometry touches another

145、ST_Union() Return point set union of two geometries

146、ST_Within() Whether one geometry is within another

147、ST_X() Return X coordinate of Point

148、ST_Y() Return Y coordinate of Point

149、StartPoint() Start Point of LineString

150、Touches() Whether one geometry touches another

151、Within() Whether MBR of one geometry is within MBR of another

152、X() Return X coordinate of Point

153、Y() Return Y coordinate of Point

时间: 2024-10-17 16:16:05

MySQL5.6空间扩展(原创)的相关文章

ora-01653表空间扩展失败产生的场景和处理方法

产生ora-01653表空间扩展失败的过程: DBF放在E盘且E盘只有剩余的200M --1.建表 DROP TABLE bigtab; CREATE TABLE bigtab AS SELECT rownum as "id", a.* FROM dba_objects a; DROP TABLE smalltab; create table smalltab as select rownum as "id", a.* FROM dba_tables a; --2.

ORA-01653 无法在表空间扩展的解决办法 -- 增加表空间大小或给表空间增加数据文件

转自原文 ORA-01653 无法在表空间扩展的解决办法 -- 增加表空间大小或给表空间增加数据文件 当前系统的数据量越来越大的,昨天还运行正常的数据库,突然无法使用了.经过定位发现是"ORA-01653 " 即表空间满了,在这里简单记录下处理办法,长期来看Oracle是顶不住了,需要尽快切到Hadoop的Hbase里存储数据 参考如下SQL ----查询表空间使用情况--- SELECT UPPER(F.TABLESPACE_NAME) "表空间名", D.TOT

kvm--虚拟机磁盘空间扩展

kvm虚拟机磁盘空间扩展与xen虚拟机磁盘空间扩展思路一致.原因在于xen/kvm默认的虚拟机磁盘格式为raw,所以方式可以通用. raw磁盘格式扩展思路如下 (1) 新添加一块raw格式的磁盘加入到KVM虚拟机,然后通过虚拟机系统lvm逻辑卷管理方式进行管理,扩展磁盘空间. (2) 直接通过dd命令扩展现有虚拟机磁盘大小,扩展之后,原磁盘大小增大,进入虚拟机系统后,直接通过fdisk分区新添加的空间,然后将该分区并入lvm逻辑卷中,扩大磁盘空间. xen虚拟化实战系列(四)之xen虚拟机扩展磁

在vSphere Client使用模板部署虚拟机 系统硬盘空间扩展

在vSphere Client中从模板部署虚拟机 从模板部署虚拟机将创建一个作为该模板的副本的新虚拟机.新虚拟机具有为该模板配置的虚拟硬件.安装的软件和其他属性. 一.连接ESXi或者vSphere Server服务器 1. 打开VMware vSphere Client客户端,输入VMware中心控制的信息,连接到VMware vSphere Center中心: 2.点击"清单"--"虚拟机和模板",找到相应的模板: 3.选择需要部署的虚机的模板,然后点击&quo

linux快速将磁盘额外空间扩展到某一挂载点

由于之前在创建用户时,为该用户目录分配的空间只有5G,在后续的开发,存放的东西越来越多,空间眼看就不够用了,网上查了一下,很多都是教我们将其余挂载点分配过多的空间分配到空间不足的挂载点,步骤还不算太复杂,主要是执行resize2fs后,会报错: resize2fs: Bad magic number in super-block while trying to open /dev/rhel/root 查了解决方案,但是发现太复杂,懒得去折腾了.于是重新找扩容方案,找到了如下指令: sudo xf

ORA-01654 索引 无法通过 表空间扩展

"ORA-01654: 索引VGSM.AUDIT_DATA_I无法通过8192(在表空间KLDB中)扩展" 1.有可能是索引表空间不够 select sum(bytes/1024/1024) sizeMB from dba_free_space z where z.tablespace_name='KLDB' 还有400M的剩余空间 应该足够. 但是通过查询发现是 select s.index_name, s.table_name, s.tablespace_name, s.initi

ORACLE 表空间扩展方法

环境: linux系统 工具:PL/SQL DEVELOPER 第一步:查看表空间的名字及文件所在位置: select tablespace_name, file_id, file_name, round(bytes/(1024*1024),0) total_space from dba_data_files order by tablespace_name 第二步:增大所需表空间大小: alter database datafile '表空间位置'resize 新的尺寸 例如: alter d

表空间扩展

修改数据库文件为自动扩展以达到表空间自动扩展的目的 表空间自动扩展 1.数据文件自动扩展的好处1)不会出现因为没有剩余空间可以利用到数据无法写入2)尽量减少人为的维护3)可以用于重要级别不是很大的数据库中,如测试数据库等 2.数据文件自动扩展的弊端1)如果任其扩大,在数据量不断变大的过程中会导致某个数据文件异常的大2)没有人管理的数据库是非常危险的 3.查询当前数据库中所有数据文件是否为自动扩展[email protected]> select tablespace_name,file_name

oracle数据库报错ora-01653表空间扩展失败解决方案

1)ora-01653错误截图: 可以看到有两张表的insert受到了影响,都是在USERS表空间里.用以下SQL查看表空间使用情况: SELECT a.tablespace_name "表空间名",a.bytes / 1024 / 1024 "表空间大小(M)",(a.bytes - b.bytes) / 1024 / 1024 "已使用空间(M)", b.bytes / 1024 / 1024 "空闲空间(M)",roun