一、MySQL数据库有几个配置选项可以帮助我们及时捕获低效SQL语句
1,slow_query_log
这个参数设置为ON,可以捕获执行时间超过一定数值的SQL语句。
2,long_query_time
当SQL语句执行时间超过此数值时,就会被记录到日志中,建议设置为1或者更短。
3,slow_query_log_file
记录日志的文件名。
4,log_queries_not_using_indexes
这个参数设置为ON,可以捕获到所有未使用索引的SQL语句,尽管这个SQL语句有可能执行得挺快。
二、检测mysql中sql语句的效率的方法
1、通过查询日志
(1)、Windows下开启MySQL慢查询
MySQL在Windows系统中的配置文件一般是是myini找到[mysqld]下面加上
代码如下
log-slow-queries = F:/MySQL/log/mysqlslowquery。log
long_query_time = 2
(2)、Linux下启用MySQL慢查询
MySQL在Windows系统中的配置文件一般是是mycnf找到[mysqld]下面加上
代码如下
log-slow-queries=/data/mysqldata/slowquery。log
long_query_time=2
说明
log-slow-queries = F:/MySQL/log/mysqlslowquery。
为慢查询日志存放的位置,一般这个目录要有MySQL的运行帐号的可写权限,一般都将这个目录设置为MySQL的数据存放目录;
long_query_time=2中的2表示查询超过两秒才记录;
2show processlist 命令
SHOW PROCESSLIST显示哪些线程正在运行。您也可以使用mysqladmin processlist语句得到此信息。
各列的含义和用途:
ID列
一个标识,你要kill一个语句的时候很有用,用命令杀掉此查询 //mysqladmin kill 进程号。
user列
显示单前用户,如果不是root,这个命令就只显示你权限范围内的sql语句。
host列
显示这个语句是从哪个ip的哪个端口上发出的。用于追踪出问题语句的用户。
db列
显示这个进程目前连接的是哪个数据库。
command列
显示当前连接的执行的命令,一般就是休眠(sleep),查询(query),连接(connect)。
time列
此这个状态持续的时间,单位是秒。
state列
显示使用当前连接的sql语句的状态,很重要的列,后续会有所有的状态的描述,请注意,state只是语句执行中的某一个状态,一个 sql语句,以查询为例,可能需要经过copying to tmp table,Sorting result,Sending data等状态才可以完成
info列
显示这个sql语句,因为长度有限,所以长的sql语句就显示不全,但是一个判断问题语句的重要依据。
这个命令中最关键的就是state列,mysql列出的状态主要有以下几种:
Checking table
正在检查数据表(这是自动的)。
Closing tables
正在将表中修改的数据刷新到磁盘中,同时正在关闭已经用完的表。这是一个很快的 *** 作,如果不是这样的话,就应该确认磁盘空间是否已经满了或者磁盘是否正处于重负中。
Connect Out
复制从服务器正在连接主服务器。
Copying to tmp table on disk
由于临时结果集大于tmp_table_size,正在将临时表从内存存储转为磁盘存储以此节省内存。
Creating tmp table
正在创建临时表以存放部分查询结果。
deleting from main table
服务器正在执行多表删除中的第一部分,刚删除第一个表。
deleting from reference tables
服务器正在执行多表删除中的第二部分,正在删除其他表的记录。
Flushing tables
正在执行FLUSH TABLES,等待其他线程关闭数据表。
Killed
发送了一个kill请求给某线程,那么这个线程将会检查kill标志位,同时会放弃下一个kill请求。MySQL会在每次的主循环中检查kill标志位,不过有些情况下该线程可能会过一小段才能死掉。如果该线程程被其他线程锁住了,那么kill请求会在锁释放时马上生效。
Locked
被其他查询锁住了。
Sending data
正在处理SELECT查询的记录,同时正在把结果发送给客户端。
Sorting for group
正在为GROUP BY做排序。
Sorting for order
正在为ORDER BY做排序。
Opening tables
这个过程应该会很快,除非受到其他因素的干扰。例如,在执ALTER TABLE或LOCK TABLE语句行完以前,数据表无法被其他线程打开。正尝试打开一个表。
Removing duplicates
正在执行一个SELECT DISTINCT方式的查询,但是MySQL无法在前一个阶段优化掉那些重复的记录。因此,MySQL需要再次去掉重复的记录,然后再把结果发送给客户端。
Reopen table
获得了对一个表的锁,但是必须在表结构修改之后才能获得这个锁。已经释放锁,关闭数据表,正尝试重新打开数据表。
Repair by sorting
修复指令正在排序以创建索引。
Repair with keycache
修复指令正在利用索引缓存一个一个地创建新索引。它会比Repair by sorting慢些。
Searching rows for update
正在讲符合条件的记录找出来以备更新。它必须在UPDATE要修改相关的记录之前就完成了。
Sleeping
正在等待客户端发送新请求
System lock
正在等待取得一个外部的系统锁。如果当前没有运行多个mysqld服务器同时请求同一个表,那么可以通过增加--skip-external-locking参数来禁止外部系统锁。
Upgrading lock
INSERT DELAYED正在尝试取得一个锁表以插入新记录。
Updating
正在搜索匹配的记录,并且修改它们。
User Lock
正在等待GET_LOCK()。
Waiting for tables
该线程得到通知,数据表结构已经被修改了,需要重新打开数据表以取得新的结构。然后,为了能的重新打开数据表,必须等到所有其他线程关闭这个表。以下几种情况下会产生这个通知:FLUSH TABLES tbl_name, ALTER TABLE, RENAME TABLE, REPAIR TABLE, ANALYZE TABLE,或OPTIMIZE TABLE。
waiting for handler insert
INSERT DELAYED已经处理完了所有待处理的插入 *** 作,正在等待新的请求。
大部分状态对应很快的 *** 作,只要有一个线程保持同一个状态好几秒钟,那么可能是有问题发生了,需要检查一下。
还有其他的状态没在上面中列出来,不过它们大部分只是在查看服务器是否有存在错误是才用得着。
例如如图:
3、explain来了解SQL执行的状态
explain显示了mysql如何使用索引来处理select语句以及连接表。可以帮助选择更好的索引和写出更优化的查询语句。
使用方法,在select语句前加上explain就可以了:
例如:
explain select surname,first_name form a,b where aid=bid
结果如图
EXPLAIN列的解释
table
显示这一行的数据是关于哪张表的
type
这是重要的列,显示连接使用了何种类型。从最好到最差的连接类型为const、eq_reg、ref、range、indexhe和ALL
possible_keys
显示可能应用在这张表中的索引。如果为空,没有可能的索引。可以为相关的域从WHERE语句中选择一个合适的语句
key
实际使用的索引。如果为NULL,则没有使用索引。很少的情况下,MYSQL会选择优化不足的索引。这种情况下,可以在SELECT语句 中使用USE INDEX(indexname)来强制使用一个索引或者用IGNORE INDEX(indexname)来强制MYSQL忽略索引
key_len
使用的索引的长度。在不损失精确性的情况下,长度越短越好
ref
显示索引的哪一列被使用了,如果可能的话,是一个常数
rows
MYSQL认为必须检查的用来返回请求数据的行数
Extra
关于MYSQL如何解析查询的额外信息。将在表43中讨论,但这里可以看到的坏的例子是Using temporary和Using filesort,意思MYSQL根本不能使用索引,结果是检索会很慢
extra列返回的描述的意义
Distinct
一旦MYSQL找到了与行相联合匹配的行,就不再搜索了
Not exists
MYSQL优化了LEFT JOIN,一旦它找到了匹配LEFT JOIN标准的行,就不再搜索了
Range checked for each Record(index map:#)
没有找到理想的索引,因此对于从前面表中来的每一个行组合,MYSQL检查使用哪个索引,并用它来从表中返回行。这是使用索引的最慢的连接之一
Using filesort
看到这个的时候,查询就需要优化了。MYSQL需要进行额外的步骤来发现如何对返回的行排序。它根据连接类型以及存储排序键值和匹配条件的全部行的行指针来排序全部行
Using index
列数据是从仅仅使用了索引中的信息而没有读取实际的行动的表返回的,这发生在对表的全部的请求列都是同一个索引的部分的时候
Using temporary
看到这个的时候,查询需要优化了。这里,MYSQL需要创建一个临时表来存储结果,这通常发生在对不同的列集进行ORDER BY上,而不是GROUP BY上
Where used
使用了WHERE从句来限制哪些行将与下一张表匹配或者是返回给用户。如果不想返回表中的全部行,并且连接类型ALL或index,这就会发生,或者是查询有问题不同连接类型的解释(按照效率高低的顺序排序)
const
表中的一个记录的最大值能够匹配这个查询(索引可以是主键或惟一索引)。因为只有一行,这个值实际就是常数,因为MYSQL先读这个值然后把它当做常数来对待
eq_ref
在连接中,MYSQL在查询时,从前面的表中,对每一个记录的联合都从表中读取一个记录,它在查询使用了索引为主键或惟一键的全部时使用
ref
这个连接类型只有在查询使用了不是惟一或主键的键或者是这些类型的部分(比如,利用最左边前缀)时发生。对于之前的表的每一个行联合,全部记录都将从表中读出。这个类型严重依赖于根据索引匹配的记录多少—越少越好
range
这个连接类型使用索引返回一个范围中的行,比如使用>或<查找东西时发生的情况
index
这个连接类型对前面的表中的每一个记录联合进行完全扫描(比ALL更好,因为索引一般小于表数据)
ALL
这个连接类型对于前面的每一个记录联合进行完全扫描,这一般比较糟糕,应该尽量避免
一、规范数据入库流程
规范化的 *** 作流程是避免 *** 作错误产生的有效手段。据此,对航空物探数据入库过程中的数据质量检查内容和方法进行了分析,归纳出系统检查9项和拓扑检查5项(表5-5)。考虑到在数据入库过程中,需要给数据采集人员授予数据库数据编辑和删除权限(以便编辑录入的错误数,删除导入的不正确数据),在编辑或删除数据库数据时,有可能错误地编辑或删除已归档数据,破坏归档数据的完整性和正确性等因素,提出了航空物探数据库入库数据质量检查的规范化流程(图5-2)。
表5-5 入库数据系统检查和拓扑检查
1)创建项目,在数据入库前先创建项目,按项目导入或录入数据。
2)入库前系统检查,导入或录入的入库数据必须通过系统的入库前检查(数据唯一性、数据类型、缺项检查),才能保存到采集库中。
3)数据进入采集库后,须接受入库后系统检查。若是空间数据必须接受拓扑检查,再与原数据文件进行逐字节比较检查,均通过后,进人工检查。
4)人工检查与人工复核,对项目概况数据、空间要素类数据(图形和属性)、文字数据、图件数据、可制成图件的对象类数据应进行人工检查与人工复核。检查方法是人工比对。该方法劳动强度大,检查人员要有较强的责任心才能发现其中的错误。人工检查与人工复核的工作内容相同,系统要求人工检查与人工复核必须由不同人员完成,加强数据检查力度,尽量消除人为因素造成的错误。
图5-2 规范化的数据入库流程
5)系统归档检查,对入库数据的非空字段进行的检查。系统归档检查通过后,入库数据可归档存入资料库。
经测试,严格按照该数据入库流程开展数据入库工作。航空物探资料库数据与入库前原数据文件数据的一致性可达100%。
该流程将入库数据与资料库数据分离,单独建立一个数据采集数据库(简称“采集库”),把待入库数据暂存在采集库中。入库数据在采集库中接受各项质量检查和编辑,或删除 *** 作,直至达到数据入库质量要求,归档进入资料库(进入资料库的数据除数据库管理员外其他用户是无权对其实施编辑或删除 *** 作的),保证资料库数据的一致性和完整性,为整体提高航空物探数据库的质量提供了保障。
二、规则化数据检查方法
50多年来航空物探取得大量的基础资料和成果资料,这些资料在地学基础研究、油气资源评价等领域发挥的重要作用日益显现。人们越来越重视利用航空物探资料来解决所遇到的地质问题等,同时人们也很想了解所用资料的来源、质量等信息(如资料的测量年代、测量方法、仪器精度、飞行高度、定位精度,数据处理方法等),来评价问题解决的可信度。这也正是本信息系统建设者想要给用户提供的。历史已既成事实,许多与资料质量有关的信息,例如在使用数字收录以前有不少项目的测量仪器精度、飞行高度、定位精度等现已处可寻。
过去的不足证明现在的进步,尊重历史尽力适应未来的技术发展,是本信息系统建设所遵循的宗旨。因此,根据资料的实际情况,提出了入库数据有效性检查的规则化方法,较好地解决了不同年代资料信息不齐全的数据入库质量检查问题。
按照通常做法,在软件代码中直接编写出每个数据库表需要做检查字段的有效性检查代码。
航空物探信息系统建设
本系统采用规则化方法检查入库数据。在完成数据库结构设计之后,针对每张数据库表中每个字段制定了入库数据正确性的检查规则,建立动态检查规则表,针对不同的检查规则编写检查函数,从数据库中获取被检查表数据库字段的检查规则,对入库数据进行检查的。规则化方法代码实现的示例如下:
航空物探信息系统建设
系统检查采用传统检查方法实现代码量约15345行(表5-6),代码开发工作量很大,且灵活性差,不利于后期代码维护和扩展,如添加表或表添加检查字段后都需要对代码进行重新修改和编译。而本系统的规则化方法代码量仅495行(表5-6),只有传统检查方法代码的322%,且添加表或表添加检查字段后不需要修改代码;用户在数据入库时,根据实际需要直接修改检查规则表即可。
表5-6 系统检查两种实现方式代码量对比表
发布时间 : 2023/2/9 15:00:06 星期四 文章不动产数据整合技术方案更新完毕开始阅读
100%检查,由数据整理单位作业人员承担;二级检查为最终检查,检查比例为30%,由数据整理单位专职质量检查人员承担;一级验收为甲方验收,并对成果进行抽查,并出具检查报告及验收意见。
17主要成果
(1)数据库成果
不动产登记数据库,主要包括不动产单元数据、权利数据、权利人数据、登记业务数据、登记档案数据等。
(2)文档成果
①不动产登记存量数据整合实施方案
实施方案主要内容包括背景、目的、任务、基础资料情况、相关依据、组织实施(任务分工,实施计划)、工作程序、技术方法、预期成果、质量控制、保障措施、经费预算等。
②不动产登记存量数据整合技术方案(细则)
技术方案(细则)主要内容包括背景、目的、任务、已有资料分析及利用、技术依据、技术要求、技术路线、技术方法、预期成果、质量控制、组织实施(组织架构、人员投入、仪器设备投入、实施计划)、合理化建议等。
③不动产登记存量数据整合工作报告
工作报告主要内容包括背景、目的、任务、工作依据、工作原则、工作步骤、主要成果、时间安排、经验与体会、问题及建议、工作打算(下一步计划)等。
④不动产登记存量数据整合技术报告
技术报告主要内容包括背景、目的、任务、完成工作情况,技术依据、技术要求、技术路线、技术方法、主要成果、质量控制(或检查验收)、遇到的问题及解决方案、相关建议等。
⑤不动产登记存量数据成果分析报告
成果分析报告主要内容包括项目区概况、成果总体情况、成果质量情况、成果存在问题及分析、相关建议等。
⑥不动产登记存量数据整合质量检查报告
质量检查报告主要内容包括受检成果情况、质检开展情况;检查依据;检查内容、检查方法、质检问题情况、质量评价、附录等。
⑦不动产登记存量数据整合质量检查记录
质量检查记录应包括实施过程中各个环节自查、互查、专查等各级检查详细记录以及成果检查记录等。
⑧其他相关文档。 (3)过程成果
①整理后的各类登记数据原始数据库,包括土地登记数据库、房产登记数据库、林权登记数据库、海域使用权登记数据库等。
②整合后的各类登记数据中间数据库,包括房地匹配数据、落宗数据、规范化后的各类登记数据等。
2 成果检查
21检查方法 211随机抽样检查
从被检查的不动产登记数据库成果中,随机抽取不少于15%的单位产品作为样本,通过对样本的检查,评价数据的总体质量。随机抽样检测采用人工目视检测方法,通过屏幕显示或输出,与原始数据进行核对,以确定数据的质量状况。
212计算机软件检查
使用预先定义和设计好的规则、方法,利用软件进行全面检查。
22质量控制要素
221空间数据的质量评价要素
(1)图层名称规范性。
图层命名应保持和《不动产登记数据库标准(试行)》一致。 (2)属性数据结构一致性。
在数据库属性结构表中,属性项的定义应和《不动产登记数据库标准(试行)》保持一致,必选属性项的描述应采用《不动产登记数据库标准(试行)》的描述,
可以适当扩展,但不得冲突。
(3)代码一致性。
有明确命名规则、编码规则和数据字典的属性项,应严格执行编码方法,保持编码语义一致。
(4)数值范围符合性
属性项的值域应符合《不动产登记数据库标准(试行)》中相关值域的要求。 (5)点层内拓扑关系 点层内无拓扑错误。 (6)线层内拓扑关系 线层内无拓扑错误。 (7)面层内拓扑关系 面层内无拓扑错误。 (8)点线层拓扑关系 点线层无拓扑错误。 (9)点面层拓扑关系 点面层无拓扑错误。 (10)线面拓扑关系 线面层无拓扑错误。 (11)碎片多边形、碎线检查 不存在超限的碎片、碎线。 (12)空间要素一致性
行政区、地籍区、地籍子区、宗地之间无逻辑错误。
222非空间数据的质量评价要素
(1)完整性
数据表齐全,如《不动产登记数据库标准(试行)》中无信息,必须保留空表,并且属性结构不得与《不动产登记数据库标准(试行)》冲突。
(2)属性数据结构一致性
在数据库属性结构表中,属性项的定义应和《不动产登记数据库标准(试行)》
保持一致,必选属性项的描述应采用《不动产登记数据库标准(试行)》的描述,可以适当扩展,但不得冲突。
(3)代码一致性
有明确命名规则、编码规则和数据字典的属性项,应严格执行编码方法,保持编码语义一致。
(4)数值范围符合性
属性项的值域应符合《不动产登记数据库标准(试行)》中相关值域的要求。 (5)表内逻辑一致性检查
对数据表内相关联约束字段进行一致性检查,保证逻辑关系正确。 (6)表间逻辑一致性检查
对数据表中的关联主键进行检查,保证关联关系正确;相关联的属性项之间没有逻辑错误。
3 成果汇交
31目标与任务
不动产登记数据汇交最直接的目的是建立全国不动产登记数据库,将各级不动产登记机构的信息纳入统一的不动产登记信息系统,确保国家与地方的数据一致,确保国家、省、市、县四级登记信息的实时共享。
不动产登记数据汇交主要任务是各县(市、区)按照统一数据内容、结构和格式等要求,通过数据抽取、映射、转换等技术手段,形成符合国家、省数据汇交要求的数据成果并上报,省根据数据汇交要求,对各县(市、区)汇交的数据成果进行数据汇总,形成省级汇交数据成果并上报。
32汇交方式及程序 321汇交方式
不动产登记数据汇交分为初始汇交和最终汇交,初始汇交是按照统一时间点首次一次性汇交数据成果,数据汇交采用全量数据库方式进行汇交;最终汇交是各县(市、区)在初始汇交基础上完成全部不动产登记数据整合后一次性汇交最
1
<<
5
6
7
8
9
Word文档下载:不动产数据整合技术方案doc
搜索更多:不动产数据整合技术方案
以上就是关于mysql数据库查询,该怎么解决全部的内容,包括:mysql数据库查询,该怎么解决、数据入库流程、不动产存量数据检查方案是什么等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)