当前位置: 首页 > news >正文

mysql随机数据插入_mysql随机数据生成并插入

mysql随机数据生成并插入

dblp数据库中引用信息很少,平均一篇论文引用0.2篇。使用dblp做实验数据集的某篇论文提到,可以随机添加引用信息。受此启发,我打算为每一篇论文都添加20篇随机引用,于是就写出了如下的sql语句:

String sql = "insert into citation(pId1,pId2) values( (select pId from papers limit ?,1),(select pId from papers

limit ?,1))";

使用preparedstatement,以batch方式提交数据库。

第一个参数是paper的rowid信息,从0~N(N为papers的total row)。第二个参数是java生成的20个不重复的随机数,范围是0-N。然后嵌套在for循环里,每1w条数据提交给数据库一次。

这段代码巧妙运用limit的特性完成随机选tuple,本来是暗暗得意的。自以为把所有的select都交给数据库去做了,省去了通过jdbc的多次连接,应该是很快就可以运行完成的。哪知,插了不过10w条(10000*10)数据,就耗时22分钟之多。最终的实验需要插入400w条数据,也就是说要花14h左右。

于是开始反思,不断做写类似的程序查找时间瓶颈,最终锁定在select limit,这个操作极耗时间。当初选用limit,原因在于:随机生成的是数字,要把数字映射到tuple,也就是对应到rowid;由于papers表的主键并非递增int,所以默认的rowid不存在。后来一想,可以在papers表上先增加一个auto_increment的temp列,完成citation插入后再删除。这样sql语句就改成了:

String sql = "insert into citation(pId1,pId2) values((select pId from papers where temp=?), (select pId from

papers   where temp=?))";

再一次插入10w条数据,耗时38s。效率大幅提高,但不知道还可不可以进一步优化。

相关文档:

mysql version 5.1

在mysql创建表的时候经常会遇到创建日期字段需要设置当前时间为默认值的时候,就如sqlserver2000一样,把默认值设为getdate()即可,我在网上查了N久都没有查到使用有效的方法,最后自己研究了一些方法与大家分享:

数据库:test_db1

创建表:test_ta1

两个字� ......

在数据库表丢失或损坏的情况下,备份你的数据库是很重要的。如果发生系统崩溃,你肯定想能够将你的表尽可能丢失最少的数据恢复到崩溃发生时的状态。本文主要对MyISAM表做备份恢复。

备份策略一:直接拷贝数据库文件(不推荐)

备份策略二:使用mysqlhotcopy备份数据库(完全备份,适合小型数据库备份)

备份策略 ......

今天安装mysql遇到很多麻烦,想象原因,自己还是linux的初学者,同时受挫时总是要把问题的复杂系数放大。

1 安装冲突

根据《linux程序设计》上的指导,从官网下载了mysql-server-xx,mysql-devel-xx,mysql-client-xx,mysql-share-xx,然后执行

rpm -i *.rpm

结果二十几行conflict提示,说有文件与mysql-server-xx的安 ......

一般建模可能都会用到:powerdesigner

但是,在建表的时候,我一直没有找到:

DEFAULT CHARACTER SET

COLLATE

两个选项。因此,想了个方法,点击:工具栏-》database-》edit current DBMS

然后,选中:MYSQL50::Script\Objects\Table\Options

在options末尾添加:

ENGINE = %s : list = BDB | HEAP | ISAM | InnoDB ......

相关文章:

  • asp 备份 mysql数据库_用Asp备份与恢复SQL Server 数据库_数据库相关_脚本
  • mysql rds数据库优势_云数据库RDS基础版的优势及适用场景
  • mysql写下拉树_PHP+mysql实现从数据库获取下拉树功能的方法
  • host mysql server_mysql远程连接 Host * is not allowed to connect to this MySQL server
  • python 迭代对象必须实现的方法_关于python的可迭代对象、迭代器、生成器的理解...
  • python上手度_(国内首发)最新python初学者上手练习
  • mysql中引号的作用是什么_mysql单引号和双引号的用法
  • mysql 存储过程 光标_MYSQL 存储过程及游标
  • php封装一个mysql的类_PHP封装的一个单例模式Mysql操作类
  • java 字符串查找_Java-006 Java字符串查找
  • java类和对象的区别_java中的对象和类之间有什么区别
  • java继承创建_java继承的实现
  • 独立进程 java_在java独立进程(standalone app)中嵌入hawtio监控
  • java session跨域_springsession跨域详解,实践实例
  • java spring框架怎么学_java开发想学习框架,请问spring 怎么入门?
  • (十五)java多线程之并发集合ArrayBlockingQueue
  • 【407天】跃迁之路——程序员高效学习方法论探索系列(实验阶段164-2018.03.19)...
  • 【许晓笛】 EOS 智能合约案例解析(3)
  • canvas 高仿 Apple Watch 表盘
  • centos安装java运行环境jdk+tomcat
  • chrome扩展demo1-小时钟
  • CSS选择器——伪元素选择器之处理父元素高度及外边距溢出
  • git 常用命令
  • jdbc就是这么简单
  • Laravel Mix运行时关于es2015报错解决方案
  • Mysql优化
  • PHP 7 修改了什么呢 -- 2
  • seaborn 安装成功 + ImportError: DLL load failed: 找不到指定的模块 问题解决
  • Service Worker
  • vue2.0项目引入element-ui
  • 阿里云应用高可用服务公测发布
  • 百度小程序遇到的问题
  • 番外篇1:在Windows环境下安装JDK
  • 分类模型——Logistics Regression
  • 给第三方使用接口的 URL 签名实现
  • 前端之Sass/Scss实战笔记
  • 微服务核心架构梳理
  • 学习ES6 变量的解构赋值
  • 学习使用ExpressJS 4.0中的新Router
  • 用Python写一份独特的元宵节祝福
  • 智能网联汽车信息安全
  • FaaS 的简单实践
  • 格斗健身潮牌24KiCK获近千万Pre-A轮融资,用户留存高达9个月 ...
  • 正则表达式-基础知识Review
  • ​LeetCode解法汇总1410. HTML 实体解析器
  • ​用户画像从0到100的构建思路
  • ### Error querying database. Cause: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException
  • #mysql 8.0 踩坑日记
  • #WEB前端(HTML属性)
  • $$$$GB2312-80区位编码表$$$$
  • (C++17) optional的使用
  • (SpringBoot)第七章:SpringBoot日志文件
  • (附源码)springboot教学评价 毕业设计 641310
  • (深入.Net平台的软件系统分层开发).第一章.上机练习.20170424
  • (一)python发送HTTP 请求的两种方式(get和post )