阿里云、腾讯云云数据库Redis版有256个DB,从DB0到DB255。
数据库是由一个整数索引标识,而不是由一个数据库名称。默认情况下,一个客户端连接到数据库0。
每个数据库都有属于自己的空间,不必担心之间的key冲突。
每个DB没有单独的内存占用量限制,DB可以使用的内存容量受Redis实例的总内存限制。
您可以使用SELECT命令在不同DB之间切换。
这是因为删除 *** 作后在数据文件中留下碎片所致。DELETE只是将数据标识位删除,并没有整理数据文件,当插入新数据后,会再次使用这些被置为删除标识的记录空间。另外实际 *** 作过程中还发现这个问题还存在两种情况。
(1)当DELETE后面跟条件的时候,则就会出现这个问题。如:
deletefromtable_namewhere条件
删除数据后,数据表占用的空间大小不会变。
(2)不跟条件直接delete的时候。如:
deletefromtable_name
清除了数据,同时数据表的空间也会变为0。
这就存在了一个问题,在网站的实际运行过程中。经常会存在这样的附带条件删除数据的 *** 作行为。天长日久,这不就在数据库中浪费了很多的空间吗。这个时候我们该使用OPTIMIZETABLE指令对表进行优化了。
如何使用OPTIMIZE以及在什么时候该使用OPTIMIZE指令呢?
命令语法:OPTIMIZE[LOCAL|NO_WRITE_TO_BINLOG]TABLEtbl_name[,tbl_name]
最简单的:optimizetablephpernote_article;
如果您已经删除了表的一大部分,或者如果您已经对含有可变长度行的表(含有VARCHAR,BLOB或TEXT列的表)进行了很多更改,则应使用
OPTIMIZETABLE。被删除的记录被保持在链接清单中,后续的INSERT *** 作会重新使用旧的记录位置。您可以使用OPTIMIZE
TABLE来重新利用未使用的空间,并整理数据文件的碎片。
在多数的设置中,您根本不需要运行OPTIMIZETABLE。即使您对可变长度的行进行了大量的更新,您也不需要经常运行,每周一次或每月一次即可,只对特定的表运行。
OPTIMIZETABLE只对MyISAM,BDB和InnoDB表起作用。
注意,在OPTIMIZETABLE运行过程中,MySQL会锁定表。因此,这个 *** 作一定要在网站访问量较少的时间段进行。
TRUNCATE
其语法结构为:
TRUNCATE[TABLE]tbl_name
这里简单的给出个示例,
我想删除friends表中所有的记录,可以使用如下语句:
truncatetablefriends;
delete的效果有点像将mysql表中所有记录一条一条删除到删完,而truncate相当于保留mysql表的结构,重新创建了这个表,所有的状态都相当于新表,这样空间就减下来了。
好了,当然对于我们网站不可能使用truncatetable来清除了,因这样之后所有数据都丢失了,这样肯定是不合理的清除了,我们必须使用delete来删除,然后再来修复优化表了哦。
以MySQL为例,碎片的存在十分影响性能
MySQL 的碎片是 MySQL 运维过程中比较常见的问题,碎片的存在十分影响数据库的性能,本文将对 MySQL 碎片进行一次讲解。
判断方法:
MySQL 的碎片是否产生,通过查看
show table status from table_nameG;
这个命令中 Data_free 字段,如果该字段不为 0,则产生了数据碎片。
产生的原因:
1 经常进行 delete *** 作
经常进行 delete *** 作,产生空白空间,如果进行新的插入 *** 作,MySQL将尝试利用这些留空的区域,但仍然无法将其彻底占用,久而久之就产生了碎片;
演示:
创建一张表,往里面插入数据,进行一个带有 where 条件或者 limit 的 delete *** 作,删除前后对比一下 Data_free 的变化。
删除前:
删除后:
Data_free 不为 0,说明有碎片;
2 update 更新
update 更新可变长度的字段(例如 varchar 类型),将长的字符串更新成短的。之前存储的内容长,后来存储是短的,即使后来插入新数据,那么有一些空白区域还是没能有效利用的。
演示:
创建一张表,往里面插入一条数据,进行一个 update *** 作,前后对比一下 Data_free 的变化。
CREATE TABLE `t1` ( `k` varchar(3000) DEFAULT NULL ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
更新语句:update t1 set k='aaa';
更新前长度:223 Data_free:0
更新后长度:3 Data_free:204
Data_free 不为 0,说明有碎片;
产生影响:
1 由于碎片空间是不连续的,导致这些空间不能充分被利用;
2 由于碎片的存在,导致数据库的磁盘 I/O *** 作变成离散随机读写,加重了磁盘 I/O 的负担。
清理办法:
MyISAM:optimize table 表名;(OPTIMIZE 可以整理数据文件,并重排索引)
Innodb:
1 ALTER TABLE tablename ENGINE=InnoDB;(重建表存储引擎,重新组织数据)
2 进行一次数据的导入导出
碎片清理的性能对比:
引用我之前一个生产库的数据,对比一下清理前后的差异。
SQL执行速度:
select count() from testtwitter_11;修改前:1 row in set (737 sec)
修改后:1 row in set (128 sec)
结论:
通过对比,可以看到碎片清理前后,节省了很多空间,SQL执行效率更快。所以,在日常运维工作中,应对碎片进行定期清理,保证数据库有稳定的性能。
空间数据又称几何数据,它用来表示物体的位置、形态、大小分布等各方面的信息,是对现世界中存在的具有定位意义的事物和现象的定量描述。根据在计算机系统中对地图是对现实教想的存储组织、处理方法的不同,以及空间数据本身的几何特征,空间数据又可分为图形数据和图像数据。
空间数据包括以下五种类型:
1、地图数据:这类数据主要来源于各种类型的普通地图和专题地图,这些地图的内容非常丰富。
2、影像数据:这类数据主要来源于卫星、航空遥感,包括多平台、多层面、多种传感器、多时相、多光谱、多角度和多种分辨率的遥感影像数据,构成多元海量数据。
3、地形数据:这类数据来源于地形等高线图的数字化,已建立的数据高程模型(DEM)和其他实测的地形数据。
4、属性数据:这类数据主要来源于各类调查统计报告、实测数据、文献资料等。
5、混合数据:这类数据来源于卫星、航空遥感与各种类型的普通地图和专题地图形成多方面数据。
空间数据结构是空间数据适合于计算机存储、管理、处理的逻辑结构,是空间数据在计算机内的组织和编码形式,是地理实体的空间排列和相互关系的抽象描述。它是对空间数据的一种理解和解释。
空间数据结构又是指空间数据的编排方式和组织关系。空间数据编码是指空间数据结构的具体实现,是将图形数据、影像数据、统计数据等资料按一定的数据结构转换为适合计算机存储和处理的形式。不同数据源采用不同的数据结构处理,内容相差极大,计算机处理数据的效率很大程度取决于数据结构。
扩展资料:
空间数据库管理系统是空间数据库的核心软件,将对空间数据和属性数据进行统一管理,为GIS应用开发提供空间数据库管理系统除了必须具备普通数据库管理系统的功能外,还具有以下三方面研究内容:
1、空间数据存储管理,实现空间数据强大的基础平台。和属性数据的统一存储和管理,提高数据的存储性能和共享程度,设计实现空间数据的索引机制,为查询处理提供快速可靠的支撑环境。
2、支持空间查询的SQL语言,参照SQL-92和OpenGIS标准,对核心SQL进行扩充,使之支持标准的空间运算,具有最短路径、连通性等空间查询功能。
3、查询,供相关人士查询数据。
参考资料来源:百度百科-空间数据
一、目标任务
1主要工作任务
《1∶25万内陆干旱区地下水资源评价塔里木盆地地下水勘查空间数据库》是在综合研究已有资料的基础上,补充野外实际工作,建立了58个标准图幅的1∶25万空间数据库。
2技术要求
采用中国地质大学开发的MAPGIS软件平台,完全依照中国地质调查局提出的各项技术标准,执行中国地质调查局最新修订的《西北地下水资源勘查评价空间数据库工作指南》20版及其他相关标准。对选定的58幅1∶25万标准图幅综合水文地质图、地质图、生态环境水文地质图、地貌图、地下水开发利用规划图、地下水水化学类型图、地下水资源分布图、平原区地下水质量分区图、综合水文地质剖面图、重点流域等水位线图等图件进行数字化处理和空间数据库的建立。
参考标准或引用标准:
GB 2260中华人民共和国行政区划代码
GB 9649地质矿产术语分类代码
GB/14157水文地质术语
GB/T 14538-93综合水文地质图图例及色标(1∶200000~1∶500000)
GB/T 14848地下水质量标准
GB/T 13923-92,国土基础信息数据分类与代码(中国标准出版社,1992)
DZ/T 0197-1997数字化地质图图层及属性文件格式(国家行业标准)
西北地下水资源勘查评价空间数据库工作指南
3提交成果
1)数据库成果(光盘汇交):见表6-1。
2)文档:属性表、图幅基本概况表、工作日志、自检表、互检表、质检组检查表、图面检查表。
表6-1 成果汇交光盘物理存储结构
3)塔里木盆地地下水勘查包括58个标准图幅的水文地质专业图件共7张彩色喷墨全要素图各1张、重点流域等水位线图3张和综合水文地质剖面图1张。
4)《1∶25万内陆干旱区地下水资源评价塔里木盆地地下水勘查空间数据库》建库报告一份。
二、工作方法及流程
(一)项目组织与实施
项目由新疆地质调查院组织,由水文地质工程地质、绘图、计算机等专业技术骨干组成,严格按照规范和技术要求实施。
(二)工作方法
概据任务书的要求,收集、购买已出版的塔里木盆地58幅图的地理信息数字化成果数据,采用中国地质大学开发的MAPGIS61软件平台,将此数据在经纬秒格式下进行拼接,按《西北地下水资源勘查评价空间数据库工作指南》标准对地理属性进行了修改。各类专业图件经过专业人员的编图,经审查合格后,采用彩色或灰度扫描,进行图形数字化,做到图元丢失率为0,误差小于002mm,其精度均达到设计要求。数据在矢量化过程中以作者原图为主的原则,属性内容以报告和图面内容相结合的方法采集,成果资料中没有的不予反映。
(三)工作流程
本次数据库建设完全按照《西北地下水资源勘查评价空间数据库工作指南》的具体要求,对相关数据资料进行整理。在MAPGIS支持环境下完成图形数据的输入和编辑,利用Access系统下创建的满足《西北地下水资源勘查评价空间数据库工作指南》数据结构要求的数据表,完成外挂属性数据的录入,并实现图层与属性数据的连接。
1数据信息组成
根据新疆塔里木盆地地下水勘查总体设计书的要求,确定此次工作数据信息的内容为基础地理、基础地质、社会经济信息、水文地质信息(含水文地质条件、水文地质观测、地下水资源等)、环境地质信息、元数据信息,具体的数据信息与内容见表6-2。
表6-2 主要数据类型与数据特征
2图层划分
新疆塔里木盆地空间数据库的建设,从基础资料图件到成果表达图件,多数内容涉及大量的矢量图形。因此,标准化处理必须确定各种图件的图层划分、图元、属性等方面的内容,以使图形库最大限度地达到共享。图形分层主要考虑到便于图形的 *** 作、管理和计算,同时考虑数据本身的专业数据特点。图层划分详见表6-3 。
表6-3 塔里木盆地地下水勘查空间数据库图层划分
续表
注:#代表含水层编号,含水层未分时,#用“0”替代。
图6-1 工作流程示意图
3数据准备阶段
作者原图及简单图件用二值或灰度,以300dpi精度扫描,复杂图件用彩色以300DPI精度扫描。所有图件的图式图例参数说明文件放入README文件夹中。
4数据矢量化阶段
放大70倍进行图件的数字化处理。点线数字化时,要保证其准确性和自然光滑,有坐标的点采用单点展绘的方法直接投影到1∶25万图中,保证了精度。线数字化时,为确保拓扑时弧段不变形,未采用MAPGIS系统提供的线圆滑功能。
5检查矢量化图件
喷绘数字化图件,对照原图进行自检、互检、抽检,并由水文地质专家进行100%的检查,确保矢量化后的图形数据与原图件一致性和完整性。
6误差校正
塔里木盆地面积大,横跨4个带。各带图件经检查无误后,生成基于原图高斯北京投影带方式的理论图框,进行误差校正。每标准图幅采集13个控制点,除4个角点外,其余点均匀分布在图幅内。
7无投影格式下重新拓扑
将检查无误的数据投影到经纬度格式。在经纬度下再进行各带各类图件的拼接,为确保套合精度,重新进行拓扑,录入面属性,再将参与做面的线从整体拓扑图层中弧转线中分离出来,做线属性。
8喷绘图件
对参与整体拓扑的图层进行拓扑处理、错误检查、修改,然后编辑区颜色。将各图层形成工程文件后,彩喷出图。再由绘图专业人员和水文地质专家对照原图检查,检查出错误进行修改,再出图,再次检查,直至完全无误,最后彩喷成果图件。
9填写属性卡片
属性卡片的内容以原图和原报告为主要依据。
10录入属性
在MAPGIS属性库管理模块中将各图层ID号和图元编号做唯一。
11转换文件格式
将经纬度格式下的属性文件,生成E00文件,转入ARCINFO中,形成最终的ARCINFO格式数据。
工作流程见图6-1。
一、系统表空间
在 MySQL 数据目录下有一个名为 ibdata1 的文件,可以保存一张或者多张表。
923275 12M -rw-r----- 1 mysql mysql 12M 3月 18 10:42 ibdata1
这个文件就是 MySQL 的系统表空间文件,默认为 1 个,可以有多个,只需要在配置文件 mycnf 里面这样定义即可。
innodb_data_file_path=ibdata1:200M;ibdata2:200M:autoextend:max:800M系统表空间不仅可以是文件系统组成的文件,也可以是非文件系统组成的磁盘块,比如裸设备,定义也很简单innodb_data_file_path=/dev/nvme0n1p1:3Gnewraw;/dev/nvme0n1p2:2Gnewraw
系统表空间里都有些啥内容?
具体内容包括:double writer buffer、 change buffer、数据字典(MySQL 80 之前)、表数据、表索引。
那 MySQL 为什么现在主流版本默认都不是系统表空间?
究其原因,系统表空间有三个最大的缺点:原因 1:无法做到自动收缩磁盘空间,造成很大的空间浪费。即使它包含的表都被删掉,这部分空间也不会自动释放。
二、单表空间
单表空间不同于系统表空间,每个表空间和表是一一对应的关系,每张表都有自己的表空间。具体在磁盘上表现为后缀为 ibd 的文件。比如表 t1,对应的表空间文件为 t1ibd917107 96K -rw-r----- 1 mysql mysql 96K 3月 18 16:13 t1ibd
单表空间如何应用到具体的表呢?
有两种方式:方式 1:在配置文件中开启。在配置文件中开启单表空间设置参数 innodb_filer_per_table,这样默认对当前库下所有表开启单表空间。innodb_file_per_table=1另外也可以直接建表时指定单表空间mysql> create table t1 (id int, r1 char(36)) tablespace innodb_file_per_table;
Query OK, 0 rows affected (004 sec)
单表空间除了解决之前说的系统表空间的几个缺点外,还有其他的优点,详细如下:
1 truncate table *** 作比其他的任何表空间都快;
2 可以把不同的表按照使用场景指定在不同的磁盘目录;
比如日志表放在慢点的磁盘,把需要经常随机读的表放在 SSD 上等。
mysql> create table ytt_dedicated (id int) data directory = '/var/lib/mysql-files';
Query OK, 0 rows affected (004 sec)3 可以用 optimize table 来收缩或者重建经常增删改查的表。一般过程是这样的:建立和原来表一样的表结构和数据文件,把真实数据复制到临时文件,再删掉原始表定义和数据文件,最后把临时文件的名字改为和原始表一样的。
三、通用表空间
通用表空间先是出现在 MySQL Cluster 里,也就是 NDB 引擎。从 MySQL 57 引入到 InnoDB 引擎。通用表空间和系统表空间一样,也是共享表空间。每个表空间可以包含一张或者多张表,也就是说通用表空间和表之间是一对多的关系。
以上就是关于redisdb容量使用情况全部的内容,包括:redisdb容量使用情况、如何解决mysqldelete表数据后,表空间大小不变的问题、数据库存储空间中碎片产生的原因 及如何回收碎片等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)