关于mysql中数据插入时间过慢问题

目前往MySQL中一次性插入大约一万五千条数据,每条数据九百多列,总共需要十分钟左右,请问时间是否过慢,如果过慢该如何解决?

1

19个回答

如是普通PC级服务器(或是更好一点的消费级服务器),你每条数据平均占用时间为40MS,考虑到你的每条数据有900多列。这样的话,已经不慢了。

如想更快的话:
1、查看是否有索引,索引是以降低插入、删除、修改时的性能,提高查询的性能。所以索引会影响插入的性能,当然自增ID的主键不在此列。
2、查看能否优化数据结构,一条记录900多列过多了。是否有大量重复数据,如有则可以优化。
3、查看能否分表,一个表一次就要插入15000行记录,太多了。是否需要经常查询所有的这些数据,如不是则可以优化(如索引不可避免,则更应如此)。
4、使用事务,一次处理如500行左右。
5、考虑MYSQL本身的日志、备份机制是否可以关掉。(这一点我也不熟)
6、使用更好的服务器。

0
cyang421
cyang421 回复weixin_41986182: 查询不可避免,如果分表的话会不会影响查询效率,另外分表应该按照什么依据来分
一年多之前 回复

如果有索引的话,建议利用分表操作。万级的数据必须要用垂直分表操作,这样每天插入的数据在不同的表中,索引也就在不同的表的索引中,减少插入带来的效率问题。

1

“ 网上购物系统”的主要功能模块

0

看你是如何操作的?如果通过工具导入,使用事务应该会快一些。

0

这个跟电脑有关,电脑装大的程序多了也会慢的

0

慢 数据更好的组织与存储 也就是数据结构更好一些有利于数据的存取

0

慢可能是因为计算机存储功能的大小有关也有可能跟数据存储的数据结构有关,建议可以释放电脑内存或者选择比较好的数据结构

0
qq_42163775
qq_42163775 有很多种情况可以影响到数据插入的快慢,如电脑本身的配置,用存储过程可以更快。
一年多之前 回复
cyang421
cyang421 回复r0328p: 怎么界定是否是比较好的数据结构?
一年多之前 回复
cyang421
cyang421 回复r0328p: 怎么界定是否是比较好的数据结构?
一年多之前 回复
cyang421
cyang421 回复r0328p: 怎么界定是否是比较好的数据结构?
一年多之前 回复

是什么需求一次要插入这么多数据 自增ID插入是比较快的 建议分成几个batch插入 每个batch几百条 异步执行
mysql可以进行分库分表 多机插入也可以解决

0

向有索引的表插入数据,是会越来越慢的,因为插入数据之后需要冲减索引。

0

向有索引的表插入数据,建议分成几个batch插入 每个batch几百条 异步执行

0
共19条数据 1 尾页
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
解决 mysql 树形结构插入数据查询死循环问题
在项目中,大家可能会遇到这样一个问题,就是当你操作那些具有上下级的树的表的时候,如果是单纯的父子级关系,可能不会碰见这个问题,但是如果这个看起来具有树形结构的表形成闭环的时候,问题就来了,我遇到的结果就是,一旦碰到这样的情况,就是页面一直卡在那里,对应着后台就是,要么程序死循环,要么数据库死循环,直到系统卡死崩溃。 这个问题很是头疼,在网上找了不少资料没有发现真正能够解决我的问题的,究其原因,还是...
mysql数据库关于时间的函数
参考:http://www.w3school.com.cn/sql/func_date_format.asp date函数即日期相关 now() 返回当前的日期和时间 curdate() 返回当前的日期 curtime() 返回当前的时间 date() 提取日期或日期时间表达式的日期部分 extract(unit from date) 返回日期/时间的单独部分,unit ...
Java代码中Date类型插入到mysql中出现时间不一致的问题
       今天在项目中,Java代码中Date类型插入到mysql中出现时间不一致的问题        今天在项目中遇到了一个问题,就是在Java中属性是util.date,表中对应的字段类型是datetime,然后Java代码插入到MySQL数据库中后,发现时间相差8个小时。后来去搜了下,发现是因为dbconfig配置文件中 db.url=jdbc:mysql://192.168.43...
mysql 插入百万数据过慢的解决办法
一开始我用存储过程批量插入100万条数据的时候,用了几个小时都还没有插完,这让我十分郁闷。于是我想应该会有解决办法吧 我存储过程sql代码如下: delimiter # create PROCEDURE test() BEGIN DECLARE i int DEFAULT 1; while i<=1000000 DO insert into book VALUES(null,'jav...
Java向MySQL数据库插入时间类型Date数据时需要注意的问题
MySQL默认的数据类型格式是:yyyy-MM-dd,如:2015-12-30 如下图: 因此我们在往MySQL数据库中插入数据时,需要先进行格式化。在java中,我们通常这样格式化日期: //生成日期对象 Date current_date = new Date(); //设置日期格式化样式为:y
Mysql插入数据时,没有自动获取时间戳的解决办法。
虽然在Navicat中设计表的时候,勾选了“根据当前时间戳更新”,但在执行inset语句时,并没有如愿,添加的是“0000-00-00 00:00:00”。 **解决办法**,去掉勾选“根据当前时间戳更新”,在默认里填写CURRENT_TIMESTAMP解决。 ...
mysql存储过程模拟插入不同日期时间数据
DROP PROCEDURE IF EXISTS insertDaKa; create procedure  insertDaKa(OUT result datetime)begin DECLARE i int;  DECLARE EDate datetime default '2018-07-07'; DECLARE ETime datetime;  SET EDate = '2018-...
MySQL中怎么插入DateTime型的数据或如何insert时间值进去(还有 注意:Oracle的时间格式)
同学插入时间值于oprTime字段(该字段为dateTime类型),insert失败,无论是加单引号括起时间值还是值换时间格式,都报异常 因为我们很相信标识列能自动为我们插入值,而且异常(在console控制台里)没有说主键怎么了啥的,当然我一看这问题,就检查了字段列数和字段类型有没有问题,确认没有问题,才给时间值做改变,实在无用,只能百度,虽然百度的这条MySql要怎么插入DateTime型的...
java.util.Date()插入MySQL数据库datetime字段出错的解决办法
出错的原因:两种date格式不一致。 java中默认的日期格式是:Thu Mar 31 18:59:29 CST 2016 MySQL中默认的日期格式是:2016-03-31 06:59:29 所以出错了。 解决办法:将java.util.Date()格式转化成MySQL的格式; 例: SimpleDateFormat sp = new SimpleDateFormat("yyyy-MM
Mysql经典的“8小时问题”
MySQL 的默认设置下,当一个连接的空闲时间超过8小时后,MySQL 就会断开该连接,而 c3p0 连接池则以为该被断开的连接依然有效。 假设你的数据库是mysql,如果数据源配置不当,将可能发生经典的“8小时问题”。原因是mysql在默认情况下,如果发现一个连接的空闲时间超过8小时,将会在数据库端自动关闭这个连接。而数据源并不知道这个连接已经关闭了,当它将这个无用的连接返回给某个dao时
jpa保存数据过慢的处理办法
1、需求说明 我是一个爬虫工程师,再用webmagic解决实时爬去数据提供给其他系统时出现了这个问题,由于这个系统是分布式爬去系统,对方要获取爬虫数据,只能轮询查看爬虫状态,我要做的是把爬出的数据及时返回给轮询的用户(爬取数据并返回数据需要在30秒内完成)。在爬取一个用户的数据时,这个用户的数据有200条左右使用jpa保存数据到数据库中竟然要1分钟作用(由于不精通jpa,查不出原因),还有就是爬
Mysql数据库插入日期类型数据,取出时无时分秒。
博主遇到这问题是因为在建表的时候   日期数据类型 用错成了 date 若想存储 带时分秒的 日期数据 应该使用 datetime数据类型。
第一篇:MySQL记录数据的插入和修改时间
一、MySQL记录数据的插入和修改时间   创建数据表 CREATE TABLE `test_time` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(20) DEFAULT NULL, `create_time` datetime DEFAULT NULL, `update_time` timestamp NO...
mysql批量导入数据遇到的问题
最近项目中有一个需求,需要把大概150W条数据导入mysql数据库中,一共六张表,数据最多的表大概有100W条数据。 因为是一次性导入,不会经常使用,因此计划写成一个小程序,使用原生JDBC,打成jar包,放到服务器上运行。第一次写完,用maven打jar包,打出的jar包不包含mysql驱动等第三方jar,并且java -jar 时没有程序入口,需要在pom.xml文件中加入如下plugin:<
mysql插入timeStamp类型数据时间相差8小时
以管理员身份登陆mysql 执行以下语句mysql &amp;gt; SET time_zone = '+8:00';   # 此为北京时,我们所在东8区mysql&amp;gt; flush privileges;   # 立即生效--------------------------------------------------------------------------如果做了上面的操作还没有生效的话,...
MySql 使用Find In Set查询很慢的解决办法
MySQL版本:5.7.19 1、需求场景 a) 表说明:商品分类关系表[t_class_product],[classId]&amp;nbsp; 分类主键,fn_class_childs(1) 返回所有子分类主键字符串; b) 功能说明: 依据 分类主键 查询该分类下的所有商品 2、问题定位 a) 之前操作:新上传几千个商品,...
nodejs操作mysql取出来的时间与实际差8小时问题
我mysql命令行打出来的datatime是正常的,结果node里同样的命令执行后获取到的datatime却少了8小时 现象:mysql命令行 查看下数据库里的时区,发现是中国标准时 CentOS上安装完MySQL后,当我们创建的表字段使用默认CURRENT_TIMESTAMP时,我们会发现,插入的时间与实际时间相差8小时,这是因为MySQL用的是标准时间,而我们所在的地方...
关于mybatis+mysql批量插入的问题
之前在写项目时,会遇到在某个时间点内需要插入多条数据。之前我采用的方式是一次循环插入一条数据,每次插入都是一个过程。1.发起与数据库的链接 2.插入一条数据。 当你需要批量插入成千上万条的时候。就会是这个数量级乘以2,相信大部分的时间是浪费在链接数据库上。  批量插入成千上万条数据,就只需要2个步骤了,链接数据量,插入数据,当然插入数据的时候sql的不同写法,那么执行的效率也会不同,待会我会举
Java在mysql数据库中插入datatime时间数据
//将时间字符串转Timestamp类型 public static Timestamp string2Time(String dateString) throws ParseException { DateFormat dateFormat; dateFormat = new SimpleDateFormat(&amp;quot;yyyy-MM-dd kk:mm:ss&amp;quot;, Locale.ENG...
mysql 插100W条记录 时间 记录
   
关于向MySQL数据库插入datetime类型时间的问题
开始插入的时候老是提示Unknown column '2016-01-01 12:12:12' in 'field list',看来就是时间出错, 我的表格各类型是这样的 所以,我把时间的格式改成为: 总结:在MySQL中datetime类型加引号括起来,char类型加                      引号,int 啥也不用
MySQL数据添加创建时间和修改时间
PHP给MySQL数据添加创建时间和修改时间修改时间:TIMESTAMP时间戳在创建新记录和修改现有记录的时候都对这个数据列刷新:TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP修改时间可以直接创建一个TIMESTAMP字段。设置默认值为ON UPDATE CURRENT_TIMESTAMP创建时间:因为在mysql中,如
python使用pymysql操作数据库,速度太慢,已解决-------mysql-connector-python
python使用pymysql操作数据库,速度太慢,已解决-------mysql-connector-python 小编使用python的pymysql操作数据库使发现,网页的加载速度特别慢,正常加载时间应该是零点几秒,可是用pymysql加载的速度高至十几秒,开始分析时,认为是图片,js,css …内存过大,然后用了“图床”,等技术之后发现没有变化,之后使用了,“删代码排除法”,一点一点的排除...
java date的值插入到mysql里面就发生变化
java程序里面代码如下Date date=new Date(); date.setHours(0); date.setMinutes(0); date.setSeconds(0);想凌晨0点时分定时插入数据,数据的日期也是凌晨0点时分才行。可是打开数据库时才发现有点差异,java date的值应该是2018-07-05 00:00:00,可是在mysql 的数据却变成了2018-07-04...
Mysql查询每天中的最后插入的一小时的数据
select statistics_date AS statisticsDate, sum(ACTIVE_USER_END) AS activeUser,sum(ACTIVE_USER) from ACTIVE_USER_HOUR t1 WHERE  t1.STATISTICS_SIGN =  (SELECT max(STATISTICS_SIGN) FROM ACTIVE_USER_HOU
mysql数据库插入时间和系统时间相差8个小时
解决办法: 在jdbc的url中加入 &amp;amp;useJDBCCompliantTimezoneShift=true&amp;amp;useLegacyDatetimeCode=false&amp;amp;serverTimezone=UTC
向MySQL数据库插入日期时出错解决
当我们通过jdbcdao向mysql数据库插入日期时,如果程序会抛出下面的异常: com.mysql.jdbc.MysqlDataTruncation: Data truncation: Incorrect date value: 'Sun Jul 28 00:00:00 CST 1996' for column 'birthday' at row 1原因:我们插入的日期时java.util.Da...
关于导入excel到数据库遇到的时间问题坑
可能有些用户在导入excel到数据库时发现excel里的时间导入到数据库变成了5位数的数字,楼主也曾经遇到过这种坑,恶心的一笔 后来终于搞定了  废话不多说 直接贴代码 function excelTime($date, $time = false) { if(function_exists('GregorianToJD')){ if (is_n
mysql中自动记录数据插入时间
又在写Hibernate大作业时候遇到了需要在数据库中记录当时插入数据时间的情况 已经解决 是这样: 将数据库中的type设置成:timestamp,默认值填写为CURRENT_TIMESTAMP 然后就会自动记录插入此条数据的时间 注意是插入时间,不是在写的时候的时间。 ...
mysql插入大量数据,时间的优化。
背景:    业务场景假设,公司原有excel记录了千万级客户的相关数据,公司业务结构实现了信息化的布局,需要在新开发的CRM系统中导入千万级的客户数据。此时需要用到mysql的insert操作来插入用户的海量数据。     普通情况下,会使用for循环一条一条的插入数据。     假设客户的数据量为10条数据。&amp;lt;?php $connect=@mysql_connect(&quot;localhost...
MYSQL为什么一个数组存到数据库里的时候插入的先后顺序变了
MYSQL为什么一个数组存到数据库里的时候插入的先后顺序变了 我通过腾讯接口拿数据比如一个数据我通过接口拿到时候是[7]=&amp;gt;Array([worker]=&amp;gt;1212121@sdfsdfsdf[openid]=&amp;gt;ddfdfdfdfdsfsdfds[opercode]=&amp;gt;1003[time]=&amp;gt;1417505903[text]=&amp;gt;)[8]=&amp;gt;Array… 应该...
MySql数据库插入一条数据时,create_time字段自动添加为当前时间
有时候我们会有这样的需求。往数据库添加一条数据。然后表中有一个字段是creat_time。添加数据的同时,这个字段默认为当前时间。其实很简单。设置字段类型为timestamp。然后下面默认值填写CURRENT_TIMESTAMP 下面那个根据当前时间戳更新 勾上。yes.搞定!~~~转载注明出处 谢谢~~~...
C++获取系统时间如何插入到MySQL里面的datetime型属性中
用c++获取系统的时间后,发现时间的格式是int型,并且我们需要的格式是类似2015-07-24 15:55:03这种类型的格式,为此将这些int型的年月日时分秒转换为string,而MySQL中datetime型的格式为'2015-07-24 15:55:03',那么问题来了:怎么将"2015-07-24 15:55:03"转换成'2015-07-24 15:55:03',从而sql语句能够
Java代码插入的记录时间与保存到MYSQL数据库后的时间不一致,时间相差8小时
1.问题 Java代码插入的记录时间与保存到MYSQL数据库后的时间不一致,时间相差8小时,例如: Java代码里插入的时间为:2019-03-12 14:57:53 数据库里面显示的时间为:2019-03-12 06:57:53 2.原因 JDBC连接时设置了serverTimezone=UTC; UTC代表的是全球标准时间 ,而我们使用的时间是北京时区也就是东八区...
【已解决】MySQL建表,插入数据时,时间自动更新至秒
# 链接到 mysql ,创建表 mobike conn = pymysql.connect(host='localhost', user='root', passwd=' ', port=3306, db='test1',charset="utf8") cur = conn.cursor() # 创建一个游标对象 cur.execute("DRO
更简单的向mysql数据库插入当前时间的方法
首先,向数据库插入datetime类型样式 $sql="insert into table values('2017-03-02 15:22:22')"; //末尾秒,分,时,可以依次省略,但日,月,年不可以省略 之前,我向数据库插入datetime类型方法一般步骤都是 (1)先设置时区,或者填Asia/chongqing date_default_timezone_set("PRC"); ...
利用Spark把数据写进mysql数据库时候遇到的问题
写入数据库的方式是:df2.write.mode(SaveMode.Append).jdbc(url,&quot;student&quot;,properties)impossible to write to binary log since BINLOG_FORMAT = STATEMENT这是因为,mysql默认的binlog_format是STATEMENT。从 MySQL 5.1.12 开始,可以用以下三种模...
插入mysql数据库时间相差14个小时
背景: spring cloud 开发web项目,数据库:mysql 持久性框架:mybatis 问题: 前一段时间遇到这么一个问题:新增数据时,datatime类型的数据插入到mysql数据库后时间相差14个小时(数据库数据比当前时间少14个小时)。 排查: 1、程序在入库前没有做任何特殊处理 2、检查系统时区:CST 3、检查数据库时区:CST(没有修改的话一般都是系统时区) 造成这种问题的原...
MYSQL数据库自动插入时间
我们在设计书数据库表格时,有些时候是要需要插入数据的时间,和更新数据的时间,但是这个时间不需要用户手动输入,只需要在用户提交,数据保存到数据库时,数据库自动更新时间。这个时候可以把字段类型设置成timestamp,timestamp属性设置为 CURRENT_TIMESTAMP 和 ON UPDATE CURRENT_TIMESTAMP  1&amp;gt; CURRENT_TIMESTAMP : 当要...
MySQL优化之提高插入效率(全局关闭autocommit)
写在前面 近来做mysql的导入时,发现插入速度极慢。5W多条数据要花半个小时,难以忍受。在网上查阅资料,总结出来这个方法。 即 关闭Mysql的自动提交 因为我是qt+mysql 配合使用,所以需要全局关闭。关闭后插入5W多条数据只需要29S MySQL默认的数据提交操作模式是自动提交模式(autocommit)。这就表示除非显式地开始一个事务,否则每个查询都被当做一个单独的事务自动执...