重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
select * from 表名 查询出来所有数据
创新互联公司专业为企业提供平南网站建设、平南做网站、平南网站设计、平南网站制作等企业网站建设、网页设计与制作、平南企业网站模板建站服务,十多年平南做网站经验,不只是建网站,更提供有价值的思路和整体网络服务。
select * from 表名 where 条件 根据条件查询
select * from 表名 limit 开始下标,每页展示条数 分页处理
再或者就是取写存储器了,自行百度
导入时把生成索引给关掉,应该能快一点.
不要一边导入一边建立索引.
8G数据,应该也不那么慢了.
把sql语句文件读取出一部分看看,建表语句中,应当有建立索引的部分,删掉它!
只做建表和插入数据两件事.
还有,看看数据库有没有外键?
尽量在插入数据过程中去掉外键关联.
等数据插入完成之后再加索引和外键,应该能提高很多读写性能.
截取一部分数据,例如100Mb.
插入一下试试,可以预先对整体时间有一个预期.
还有,真的要弄台好点的电脑,或者去借一台,等把数据导入完成之后,把msyql的库文件直接复制出来放自己机器上跑就好.
emm..
再追加点信息,要先搞明白,sql原文件里,到底都执行了哪几类操作?
可能需要你用c之类写点小工具,或者别的什么语言,分块读取并处理文件.
8G..
嗯,还好.
现在内存都够大,否则你都没法直接用软件打开了.
只有8G也可以直接用软件打开看.
停掉索引真的可以大幅度加快插入数据的速度.
建议试一试!
最近公司提了个需求,说公司的旧系统的报表导出的时候,数据量超过一万就导不出来了。经过分析,是旧系统做了限制。在更新的时候,查看了导出时虚拟机GC情况,发现原先程序执行时,内存激增,经过Google决定采用流式读取对sql进行优化。
jdk1.8 、intellij IDEA 2018
mybatis 3 、 springMVC 、Spring 4
实现流式读取的方式不止一种,但是我只能说我解决的这种,对不起,我不是大神级的。
这里采用的 controller、service、dao分层开发
为什么dao返回值为void还要在mapper写resultMap?因为回调要用你的resultMap处理,但是不应该返回给service,因为回调处理好了
controller层:
service层:(重点)
dao层:(重点)
mapper:(重点)
个人原因:删除非关键部分代码。你肯定看的懂得。
Google了好久的一个原因,就是因为dao接口不应该返回值的。还麻烦了老大过来看了一眼。
还有就是google出来的那些,要改框架配置的,我的确跟着改了,改了mysql连接参数,还有mybatis setting的配置。嗯,没用。
一、使用LOAD DATA INFILE从文本下载数据这将比使用插入语句快20倍。
二、使用多个值表的 INSERT 语句 ,可以大大缩减客户端与数据库之间的连接、语法分析等消耗,使得效率比分开执行的单个 INSERT 语句快很多,相关的命令我们会在 SQL 优化详细介绍。如果多值的 INSERT是往一个非空的数据表里增加记录 ,也可以通过调整 bulk_insert_buffer_size 参数来提高数据插入的效率,这个参数设置的是 bulk insert 的缓存大小,默认是 8M 。
insert本身的多个value:
INSERT INTO table (field1,field2,field3) VALUES ('a',"b","c"), ('a',"b","c"),('a',"b","c");
在my.cnf中添加如下语句,将insert语句的长度设为最大。
Max_allowed_packet=1M
Net_buffer_length=2k
查看bulk_insert_buffer_size的值。
mysql SHOW VARIABLES;
+———————————+—————————————-+
| Variable_name | Value |
+———————————+—————————————-+
| auto_increment_increment | 1 |
| auto_increment_offset | 1 |
| automatic_sp_privileges | ON |
| back_log | 50 |
| basedir | /usr/local/mysql/ |
| binlog_cache_size | 32768 |
| bulk_insert_buffer_size | 8388608 |
MySQL数据库支持批量查找,但是批量修改需要结合条件语句。 例如 update 表一 set A=3 where A=5;