mysql单表1000万条_mysql单表千万条数据测试
软件环境:win7,mysql版本5.5,InnoDB存储引擎。
硬件环境:普通笔记本,CPU P8700双核2.53GHz,内存3G,5400转机械硬盘1000GB。
建了一张表,id列是自增长bigint,再加上其他varchar、datetime型的字段,总共8个字段,通过java生成了insert的sql文件,一共62个文件,每个文件50万行(约88M),总共3100万行记录(约5.35G),通过source导入,从中午1:30一直到18:00才导完,花了快4个半小时,导完后,数据文件大小约2.5G。后来听说用load data infile可以加快导数据时间,改天再试试。
结论1:由此可见,mysql单表支持1000万条数据是完全可行的。
此时只有id列上有主键,聚集索引,测试开始。
1、整表数据行数统计(select count)
select count(*) from t_test;
返回3100万条数据足足花了1分21秒,多次测试取平均值,也差不多要1分6秒。
select count(n_id) from t_test;
返回3100万条数据也要1分多,感觉比count(*)性能好不了多少,难道是数据量级还不够大?
给n_id建了一个非聚集索引,create index idx_nid on t_test(n_id) 耗时4分43秒。
再次 select count(n_id) from t_test;
返回3100万条数据耗时13.52秒;快了不少!
select count(*) from t_baginfo;
返回3100万条数据耗时12.86秒;比count(n_id)快约700毫秒;
结论2:在只有聚集索引的情况下,再给主键列建一个非聚集索引后,select count(*)速度可以得到很大提升
2、分页测试
a、取1万行后面10行记录:
select * from t_test limit 10000,10;耗时0.03秒
只取n_id
select n_id from t_test limit 10000,10;耗时0.01秒
b、取10万行后面10行记录:
select * from t_test limit 100000,10;耗时0.14秒
只取n_id
select n_id from t_test limit 100000,10;耗时0.08秒
c、取100万行后面的10行记录:
select * from t_test limit 1000000,10;耗时1.69秒
只取n_id
select n_id from t_test limit 1000000,10;耗时0.77秒
d、取1000万行后面的10行记录:
select * from t_test limit 10000000,10;耗时17.86秒
select * from t_test where n_id>(select n_id from t_test limit 9999999,1 ) limit 10; 耗时18.27秒
加n_id排序:
select * from t_test order by n_id limit 10000000,10;耗时18.14秒
select * from t_test where n_id>(select n_id from t_test order by n_id limit 9999999,1 ) limit 10; 耗时18.27秒
只取n_id
select n_id from t_test limit 10000000,10;耗时4.22秒
select n_id from t_test where n_id>(select n_id from t_test limit 9999999,1 ) limit 10; 耗时5.51秒
加n_id排序:
select n_id from t_test order by n_id limit 10000000,10;耗时17.25秒
select n_id from t_test where n_id>(select n_id from t_test order by n_id limit 9999999,1 ) limit 10; 耗时17.98秒
mysql单表1000万条_mysql单表千万条数据测试相关推荐
- mysql造1000万数据_MySQL制作具有千万条测试数据的测试库
有时候需要制造一些测试的数据,以mysql官方给的测试库为基础,插入十万,百万或者千万条数据.利用一些函数和存储过程来完成. 导入官方的数据库,做了一些简化,留下了部门表,员工表和雇佣表三张表,去掉了 ...
- Python网络爬虫实践(1):爬取网易云音乐播放量大于1000万的歌单
Python网络爬虫实践(1) 一.需求分析 爬取网易云音乐播放量大于1000万的歌单. 二.实施步骤 1.安装selenium selenium是一个用于Web应用自动化程序测试的工具,测试直接运行 ...
- 批量往mysql里面插入1000万条数据_绝对干货,教你4分钟插入1000万条数据到mysql数据库表,快快进来...
我用到的数据库为,mysql数据库5.7版本的 1.首先自己准备好数据库表 其实我在插入1000万条数据的时候遇到了一些问题,现在先来解决他们,一开始我插入100万条数据时候报错,控制台的信息如下: ...
- mysql修改表中学生姓名 专业_MySQL单表练习
1.创建一个名称为mydb1的数据库. Create databasemydb1; 2.创建一个使用utf8字符集的mydb2数据库. createdatabasemydb2charsetutf8; ...
- 我有一个订单系统,订单日增加1000万,怎么设计表
2017年6月14日 Mysql TPS 可以达到1000/S 下面的某些结论需要重新考察 ====================================================== ...
- mysql查询主键sql语句_MySQL数据库-表操作-SQL语句(一)
1. 数据库操作与存储引擎 1.1 数据库和数据库对象 数据库对象:存储,管理和使用数据的不同结构形式,如:表.视图.存储过程.函数.触发器.事件等. 数据库:存储数据库对象的容器. 数据库分两种 ...
- mysql 查询多个记录查询_MySQL多表数据记录查询详解
在实际应用中,经常需要实现在一个查询语句中显示多张表的数据,这就是所谓的多表数据记录连接查询,简称来年将诶查询. 在具体实现连接查询操作时,首先将两个或两个以上的表按照某个条件连接起来,然后再查询到所 ...
- mysql 表 视图 索引吗_Mysql多表查询, 视图,事务,索引,函数,go连接数据库
1.1 今日目标 理解多表查询 理解子查询 能够创建视图 能够删除视图 能够查看创建视图的SQL语句 能够理解事务的作用 能够操作事务 理解索引的作用 能够创建索引 能够删除索引 知道常用的函数 了解 ...
- mysql 多表查询计算平均_MYSQL多表查询
一. 课堂练习以及知识点 表的加法 含义:将两个表按行合并在一起,用union将两个表中的结果合并在一起 案例 select 课程号,课程名称 from course union select 课程号 ...
最新文章
- dns tunnel 使用 nishang 下载TXT里的cmd(TXT里)实现CC command+ ceye实现数据外发
- 数学在机器学习中的重要性[by Dahua Lin]
- MathType如何保存常用公式
- 鸿蒙自研系统,华为已注册“华为鸿蒙”商标,自研操作系统最快秋季发布
- Myeclipse中weblogic配置
- ES6的Set和Map你都知道吗?一文了解集合和字典在前端中的应用
- NLP深度学习:近期趋势概述(二)
- c语言字符串传给swift,如何把字符串数组从 Swift 传递给 C
- 1.6_quick_sort_快速排序
- linux中程序包管理方式出现的原由(转载)
- 玩转Python大数据分析 《Python for Data Analysis》的读书笔记-第08页
- jsf面试题_JSF面试问答
- python 句子中没有中文_使用python进行汉语分词
- 三菱plc pwm指令_常用PLC各系列简介大全,选型必看!
- 电力仿真需要学的软件?5款有实力的电力仿真软件
- bp神经网络预测模型流程图,bp神经网络实例分析
- 极光im java,连接极光异常是什么原因
- 学习和使用技术的4种层次
- windows 下配置 Nginx 常见问题
- 乐天店铺网页制作、装修简要教程