`
pingfeng
  • 浏览: 59131 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

mysql中大表与小表的查询性能测试

阅读更多

 

改造了一下AR的测试脚本(见附件),测试在大表下的AR全方位性能。

 

经过测试发现,有索引的情况下,ActiveRecord的CRDU都可以保证在0.1-1ms下完成。但在没有索引的情况下,遍历全表,就很意思了!

 

1. 遍历:一万条记录遍历在5-11ms, 在可用性范围内。但一百万条记录,在0.6-2s内,显示达不到可用性要求了。百万条记录查找一定要有索引。

 

2. 非平衡:对两张不同的表(记录数)相同,查找性能是截然不同的。 exhibit表里有大字段,查找性能就比user表差很多。

 

3. 非线性:随着纪录数增加,遍历查找性能下降(非线性下降)。由其是含有大字段数据的表。exhibit在一万条记录下是11.060ms, 在一百万条记录不是1100ms, 而是1892ms.

 

 

测试数据:

 

10,000 records 


                                                      |      AR |
------------------------------------------------------------------
create 10_000 records                               x1 |  29.919 |
Model.first                                      x1000 |   0.275 |
Model.all limit(100)                             x1000 |   7.454 |
Model.all limit(100) with relationship           x1000 |  13.036 |
Model.all limit(10,000)                            x10 |   7.415 |
Model.create                                     x1000 |   1.240 |
Resource#update                                  x1000 |   0.775 |
Resource#destroy                                 x1000 |   1.066 |
Model.find(id)                                   x1000 |   0.239 |
Model.find_by_sql                                x1000 |   0.105 |
Model.find_by_name in user                         x1000 |   5.936 |
Model.find_by_name in exhibit                    x1000 |  11.060 |



                         
1,000,000 records
                                                      |      AR |
------------------------------------------------------------------
create 1_000_000 records                            x1 | 3112.17 |
Model.first                                      x1000 |   0.279 |
Model.all limit(100)                             x1000 |   7.504 |
Model.all limit(100) with relationship           x1000 |  13.000 |
Model.all limit(10,000)                            x10 |   7.436 |
Model.create                                     x1000 |   1.235 |
Resource#update                                  x1000 |   0.765 |
Resource#destroy                                   x10 |   0.009 |
Model.find(id)                                   x1000 |   0.240 |
Model.find_by_sql                                x1000 |   0.121 |
Model.find_by_name in user                           x10 |   6.359 |
Model.find_by_name in exhibit                      x10 |  18.952 |   

 

测试脚本

分享到:
评论

相关推荐

    本科毕业设计:中大闲置app.zip

    【本科毕业设计:中大闲置app.zip】是一个与信息技术密切相关的项目,主要涵盖了移动应用开发这一重要领域。在这个项目中,我们可以看到一个针对大学生的二手物品交易平台的设计与实现,这通常涉及到前端用户界面的...

    VB中大迅通合同统计系统(论文+源代码).rar

    源码说明: 全部项目源码都是经过测试校正后百分百成功运行。 SpringBoot 毕业设计,SpringBoot 课程设计,基于SpringBoot+Vue开发的,含有代码注释,新手也可看懂。ssm整合开发,小程序毕业设计、期末大作业、课程...

    实用的物质管理c++程序

    8. **测试与调试**:编写完成后,需对程序进行充分的测试,确保其功能的正确性和性能的合理性。可以使用断言、单元测试框架(如Google Test)等工具来帮助调试和验证。 综上所述,"实用的物质管理C++程序"涉及了C++...

    Python库 | django_neomodel-0.0.7.tar.gz

    这个库允许开发者利用Django的强大功能和 Neo4j 的非关系型数据库优势,进行高效、灵活的数据存储和查询。在后端开发中,它提供了模型定义、数据操作、以及图形数据库特有的关系管理等功能,为基于Python和Django的...

    yxd_shop.zip

    1. 数据库设计:根据业务需求,使用关系型数据库如MySQL,进行数据表的设计和优化,确保数据的安全性和一致性。 2. RESTful API:遵循REST原则,设计清晰、简洁的HTTP接口,供前端调用,如商品查询、用户登录、订单...

    毕设选题系统.zip

    3. **数据库设计**:理解关系型数据库模型,SQL查询编写,以及如何优化查询性能,例如索引的创建和使用。 4. **版本控制**:项目可能使用Git进行版本控制,理解分支策略,合并冲突的解决等。 5. **Web安全**:包括...

    JEECG智能开发平台V3开发的指南.doc

    JEECG平台基于Java技术栈,利用Spring Boot、MyBatis等主流框架,融合了前后端分离、代码生成、自动化测试等多种现代开发模式。它适应了当前云计算、大数据时代对软件开发的需求,能够帮助开发者在短时间内构建出...

    微信HTML5在线朋友圈游戏源码带安装部署教程-消灭蚊蝇游戏.rar

    微信朋友圈是腾讯微信软件中的一个社交功能,用户可以在此发布文字、图片、视频等内容与朋友分享。而微信HTML5游戏则可以直接在朋友圈内玩,无需下载安装,用户只需点击链接即可参与。这种游戏通常体积小、加载速度...

    nodeByJonas:Node JS最佳课程,将近40个小时

    同时,也将探讨与SQL数据库如MySQL、PostgreSQL的集成,以及ORM(对象关系映射)工具如Sequelize和TypeORM的使用。 文件系统操作是Node.js的另一个重要部分。课程将介绍如何读写文件、目录管理和流的概念,这些都是...

    gofullstack

    MongoDB、MySQL等数据库的集成,以及NPM包管理,让Node.js在全栈开发中大放异彩。 六、WebSocket实时通信 WebSocket提供双向通信,常用于实时聊天、游戏、股票行情等场景。结合Node.js,可以轻松创建WebSocket...

Global site tag (gtag.js) - Google Analytics