`
maosuhan
  • 浏览: 112392 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

mysql关于大型数据查找删除和添加索引的调查报告

阅读更多
为了研究性能,所以必须先引入大量的数据,基数据为1600多个,现在执行insert into xn_profile (select * from xn_profile)来不断增加数据。
其时间分别为0.11sec,0.27sec,0.35sec,0.39sec,1.6sec,3.45sec,7.38sec,27.41sec,46.72sec,99.66sec,大概是线性变化,但是不稳定,尤其7.38到27.41。

在437216的基数上查询
select count(*) from xn_profile where university="南京大学";

时间为2.27秒,但是再次查询相同的却用了0秒。


随后在university上建立了索引。
create index university_index on xn_profile(university);
花了44.93秒。
再次执行相同的查询
select count(*) from xn_profile where university="南京大学";

花了0.06秒


随后
select count(*) from xn_profile where university="清华大学"
,清华大学比南京大学少得多得多(大概1/100),也只用了0.05秒。



select count(*) from xn_profile where province="江苏";
在没有索引的情况下用了2.9秒,查了江西,也是2.79秒。


再去掉索引,花了27.94秒。


随后将基数上升到1730000,原数据的4倍
select count(*) from xn_profile where university="东南大学";

用了11.16秒,差不多是2.27秒的4倍,符合顺序查找的规律。



select count(*) from xn_profile;
也用了11.79秒。
此时再次建立索引用了223秒。



然后执行相同的
select count(*) from xn_profile where university="清华大学"
,用了0.13秒,查东南大学用了0.42秒,查南京大学2.03秒。


再增加一倍的数据,356秒(包括创建额外索引的时间),这个时间也不知道是应该怎么看
才好。基数达到3475000
select count(*) from xn_profile;
用了52.67秒,这个比是11.26秒的5倍,搞不懂了,怎么会增长这么快?


select count(1) from xn_profile where university="东南大学";
只用了0.83秒


 select count(1) from xn_profile where university="南京大学";
用了4.33秒


我插了一条数据,
 insert into xn_profile(university) values("test");
select count(1) from xn_profile where university="test";
用了0秒,快得一比。


mysql在不同的连接时也会缓存查询结果。
此时,备份该表,用了将近2分钟。数据量达820兆,当然都是sql语句,不敢打开。



结论1、在插入insert操作时时间随插入量大致是线性变化的。
结论2、mysql会把之前查询到的结果缓存,可以跨连接缓存。
结论3、影响索引查询的主要因素取决于数据量的多少,在数据量整体都不是很大时看不出来,但是数据量很大很大时,就明显了。貌似是根号关系,即数据量增加x的平方倍,时间增加x倍。
结论4、在顺序查找(无索引的情况下)时,查询时间主要受查询时间的影响而非io传输的影响。
结论5、我认为顺序查询主要受查询时间的影响。而索引查询主要受io数据传输的影响。
分享到:
评论
3 楼 lubobill1990 2010-05-14  
maosuhan 写道
lubobill1990 写道
“其时间分别为0.11sec,0.27sec,0.35sec,0.39sec,1.6sec,3.45sec,7.38sec,27.41sec,46.72sec,99.66sec,大概是线性变化,但是不稳定,尤其7.38到27.41。 ”
这个不是线性变化吧,是2的n次方的增长。
前期一直到7.38s符合预期规律,之后都差不多是预期时间的两倍,应该是内存的问题。

“Sql代码
select count(*) from xn_profile where university="南京大学"; 
时间为2.27秒,但是再次查询相同的却用了0秒。 ”
第二次查询使用0秒应该是第一次的查询的缓存直接读出的结果


绝对不是2的n次方,因为理论上讲不通


1,2,4,8,16,32
这个应该不是线性变化吧。。。
1600->3200->6400->12800->.......
2^0    2^1   2^2    2^3……

应该是2的N次方吧
2 楼 maosuhan 2010-03-18  
lubobill1990 写道
“其时间分别为0.11sec,0.27sec,0.35sec,0.39sec,1.6sec,3.45sec,7.38sec,27.41sec,46.72sec,99.66sec,大概是线性变化,但是不稳定,尤其7.38到27.41。 ”
这个不是线性变化吧,是2的n次方的增长。
前期一直到7.38s符合预期规律,之后都差不多是预期时间的两倍,应该是内存的问题。

“Sql代码
select count(*) from xn_profile where university="南京大学"; 
时间为2.27秒,但是再次查询相同的却用了0秒。 ”
第二次查询使用0秒应该是第一次的查询的缓存直接读出的结果


绝对不是2的n次方,因为理论上讲不通
1 楼 lubobill1990 2010-03-15  
“其时间分别为0.11sec,0.27sec,0.35sec,0.39sec,1.6sec,3.45sec,7.38sec,27.41sec,46.72sec,99.66sec,大概是线性变化,但是不稳定,尤其7.38到27.41。 ”
这个不是线性变化吧,是2的n次方的增长。
前期一直到7.38s符合预期规律,之后都差不多是预期时间的两倍,应该是内存的问题。

“Sql代码
select count(*) from xn_profile where university="南京大学"; 
时间为2.27秒,但是再次查询相同的却用了0秒。 ”
第二次查询使用0秒应该是第一次的查询的缓存直接读出的结果

相关推荐

    php&mysql问卷调查系统

    - **SQL支持**:支持SQL标准,包括创建表、查询、更新和删除数据。 - **易于扩展**:可以通过增加硬件或设置复制来扩展数据库性能。 ### 3. 问卷调查系统设计 一个完整的问卷调查系统通常包含以下核心组件: - **...

    北京php程序员调查报告

    6. **优化经验**: 具备MySQL索引、查询和存储优化经验,熟悉PHP缓存技术与静态化设计。 7. **协作工具**: 应用CVS或SVN进行协作开发,具备撰写设计文档的能力,书面表达能力强。 8. **语言要求**: 对英语有基本的...

    mysql代码-在线调查系统数据库

    【标题】:“mysql代码-在线调查系统数据库”指的是一个基于MySQL数据库系统的在线调查应用程序的数据库设计和实现。这个系统可能用于收集用户反馈、意见或进行各类调研活动。 【描述】:“mysql代码-在线调查系统...

    医药销售管理系统数据库课程设计.docx

    数据实施和维护阶段,使用DBMS建立数据库,加载初始数据,并实现查询、插入、删除和修改等基本操作。同时,设计和创建触发器、存储过程等数据库对象,以支持业务规则的自动化执行和数据的一致性。这个阶段还包括对...

    PHP开发实战1200例(第1卷).(清华出版.潘凯华.刘中华).part1

    实例127 将数组中指定索引位置的元素替换 157 实例128 获取数组中最后一个元素 158 实例129 去除数组中的重复元素 158 实例130 字符串与数组的转换 159 实例131 对数组元素进行随机排序 160 实例132 随机抽取数组中...

    PHP开发实战1200例(第1卷).(清华出版.潘凯华.刘中华).part2

    实例127 将数组中指定索引位置的元素替换 157 实例128 获取数组中最后一个元素 158 实例129 去除数组中的重复元素 158 实例130 字符串与数组的转换 159 实例131 对数组元素进行随机排序 160 实例132 随机抽取数组中...

    JSP问卷调查系统

    数据库设计应考虑扩展性和数据安全性,例如使用合适的数据类型、建立索引、设置约束条件等。 **使用方法**通常包括以下步骤: 1. **部署应用**:将JSP问卷调查系统的源代码上传到支持JSP和Servlet的Web服务器,如...

    人事管理系统_数据库课程设计报告.doc

    【人事管理系统】数据库课程设计报告是对企业内部人力资源管理进行信息化的一种系统设计,旨在提高工作效率,减少人为错误,便于数据统计和决策支持。本报告由学生吴深深完成,旨在通过数据库技术实现人事管理的规范...

    学校、企业调查表-投票系统

    此系统旨在简化传统纸质调查流程,提高数据收集的效率和准确性,同时降低了组织者的工作负担。 一、系统功能详解: 1. **问卷创建**:用户可以通过后台管理系统创建调查表,设定问题类型(如选择题、填空题、判断...

    JAVA综合项目.docx

    系统需具备学生基本信息录入、修改、删除和查询功能;支持按不同条件进行信息检索;具备数据导入导出功能;能生成统计报告和图表;还需具备用户权限管理,确保数据安全。 3.3 组内成员分工 根据项目需求,组员可以...

    满意度调查系统源码

    【满意度调查系统源码】是一种用于收集、分析和评估用户对产品或服务满意度的数据系统。在IT领域,这种系统通常采用编程语言如Java、Python、PHP等开发,并结合数据库技术来存储和处理调查数据。本系统的核心功能...

    西安邮电大学计算机学院数据库课程设计 480页 两个财富值.doc

    1. 数据库设计:包括基本表、视图和索引表的设计,数据库的 normalization 和 denormalization,数据模型的设计等。 2. 服务器组织:包括服务器的搭建、数据库的存放、客户机/服务器体系结构等。 3. 前端和后台开发...

    数据库课程设计-校园卡管理系统.doc

    - **过程**:通过访谈、问卷调查等方式收集用户需求,进行功能需求和用户需求分析,以及数据字典的建立。 - **功能需求**:主要包括充值、消费记录管理、余额查询、个人信息管理、权限控制等。 - **用户需求**:...

    计算机应用数据库设计报告

    设计过程中,学生需在规定的一周时间内,进行系统调查、分析、总体设计、实施计划和报告撰写,并在最后一天进行演示和验收。设计报告要求结构清晰、整洁规范,内容不得抄袭,字数不少于2000字(不包括附录)。同时,...

    学生信息管理系统数据库课程设计报告.docx

    选择合适的数据库管理系统(如MySQL或Oracle)和开发工具(如Visual Studio或Eclipse),进行系统开发。 4.2 学生信息管理系统数据库实现 具体描述了如何利用选定的工具和技术实现数据库,包括创建表、设置索引、...

    用C#做的公司管理系统

    数据库设计是系统的核心部分,涉及实体关系建模、数据表设计和索引优化。例如,员工表可能包含ID、姓名、部门ID、职位ID等字段,通过外键关联部门表和职位表。每个功能模块对应相应的数据表,如项目表、考勤表等,...

    万科房地产公司房屋销售管理系统

    在技术实现上,根据【标签】,这个系统基于销售管理系统的标准架构,可能会利用数据库管理系统(RDBMS)如MySQL或Oracle来存储和处理大量数据。设计过程遵循了以下步骤: 1. **需求分析**:通过对实际房地产销售...

    2019数据库原理课程设计报告1

    《2019数据库原理课程设计报告1》主要围绕相机租赁系统的数据库设计展开,涉及到数据库设计的基本步骤,包括需求分析、概念设计、逻辑设计以及安全性、完整性和性能的要求。以下是根据提供的信息提炼出的关键知识点...

    XX问卷应用数据架构

    2. 数据库设计:数据架构师需要根据数据模型创建数据库结构,选择合适的数据库管理系统(如MySQL、Oracle或MongoDB),并设计表结构、索引、约束等,以优化数据存储和查询性能。 3. 数据集成:在XX问卷应用中,可能...

    教务辅助管理系统数据库

    8. **报告与报表**:数据库能生成各种教务报表,如学生出勤情况、课程满意度调查结果等,为决策提供数据支持。 9. **系统集成**:教务辅助管理系统可能与其他校园信息系统集成,如学生信息系统、财务系统,实现数据...

Global site tag (gtag.js) - Google Analytics