Navicat Lite

同事埋了个坑:Insert into select语句把生产服务器炸了

☆樱花仙子☆ 提交于 2020-11-04 05:21:05
来自:掘金(作者:不一样的科技宅) 原文链接: https://juejin.im/post/5e670f0151882549274a65ef 前言 Insert into select请慎用。这天xxx接到一个需求,需要将表A的数据迁移到表B中去做一个备份。本想通过程序先查询查出来然后批量插入。但xxx觉得这样有点慢,需要耗费大量的网络I/O,决定采取别的方法进行实现。通过在Baidu的海洋里遨游,他发现了可以使用insert into select实现,这样就可以避免使用网络I/O,直接使用SQL依靠数据库I/O完成,这样简直不要太棒了。然后他就被开除了。 事故发生的经过 由于数据数据库中order_today数据量过大,当时好像有700W了并且每天在以30W的速度增加。所以上司命令xxx将order_today内的部分数据迁移到order_record中,并将order_today中的数据删除。这样来降低order_today表中的数据量。 由于考虑到会占用数据库I/O,为了不影响业务,计划是9:00以后开始迁移,但是xxx在8:00的时候,尝试迁移了少部分数据(1000条),觉得没啥问题,就开始考虑大批量迁移。 在迁移的过程中,应急群是先反应有小部分用户出现支付失败,随后反应大批用户出现支付失败的情况,以及初始化订单失败的情况,同时腾讯也开始报警。 然后xxx就慌了

文件上传(插件版)和下载

假装没事ソ 提交于 2020-10-31 08:06:14
这个方法可以上传图片,文档,视频,在方法里面进行了处理。 源码地址: https://github.com/SeaLee02/FunctionModule UploadFiles/WebDemo/UpControl 文件夹下就是源码 优点:无刷新页面可以上传你的文件,速度快。 缺点:需要花时间去探索下。如果你能够理解这个方法,并掌握,能够根据需求自己更改,那就看不出有什么缺点。 跟分页一样,如果你掌握,每个项目都可以用到。 这个方法的上传是不用通过表单提交的,是利用插件来上传文件 我们的显示效果: 我们点击浏览就可以选择文件,选择完成后就会上传,这个过程不会刷新页面,如果文本框中出现了路径证明上传成功,失败就弹出提示。 我们既然把文件已经上传成功了,最右边这个按钮是干嘛的呢? 它可以来保存我们的数据到数据库中。 这样会有一个问题,如果文件过大,是不让上传的。 我们可以改一下配置文件 <system.web> <compilation debug= " true " targetFramework= " 4.5.2 " /> <httpRuntime executionTimeout= " 3600 " maxRequestLength= " 1048576 " requestValidationMode= " 2.0 " /> <!--<httpRuntime

Debian9 下卸载 MariaDB 并安装 Mysql8

∥☆過路亽.° 提交于 2020-10-30 21:25:19
因为部分字段需要使用json格式,所以需要MySql 8! linux:Debian 9 mysql:8.0.13 完全卸载mariaDB sudo apt-get purge mariadb-* 这是清理 MariaDB 中的数据库,是彻底地卸载的话,一并移除即可。 安装mysql 首先,将 MySQL APT 存储库添加到系统,先到 MySQL存储库下载页面 ,并使用以下wget命令下载最新的发行包: wget http://repo.mysql.com/mysql-apt-config_0.8.13-1_all.deb 下载完成后,通过以下命令安装: sudo dpkg -i mysql-apt-config_0.8.13-1_all.deb 你将会看到MySQL配置安装菜单,选择你要安装的版本。 默认选择了 MySQL 8.0,如果要安装 MySQL 5.7,请选择 MySQL Server & Cluster(当前选择:mysql-8.0),然后选择对应的 MySQL 版本。 我们将安装 MySQL 8.0 版, 通过按 Tab 键选择 “确定”,然后按 Enter 键(如上图所示)。 使用以下命令更新软件包,并安装MySQL。 sudo apt update sudo apt install mysql-server 安装过程中将会弹出设置 MySQL root

POS性能测试案例分享

十年热恋 提交于 2020-10-29 06:07:28
点击上方 “公众号” 可以订阅哦! Let's make a difference together! 如果我的分享带给您收货,希望能介绍更多的人订阅! 今天在整理以前的工作资料时发现了一篇测试报告,觉得可能会对某些行业的朋友有所帮助。 需求: 竞品和我们在数据量大的时候的性能对比。导入 2w 个商品, 2w 个会员,在银豹、天店和快店收银,做查找商品,收银,查找会员, 商品管理,分类管理,是否有卡顿,变慢,不稳定的问题。 需求分析: 1. 经过跟同事沟通,确认了会员数量的多少不会对前端 pos 性能产生影响。往 pos 端导入商品数据有两种方案:《其实也考虑过直接找一个有 2W 商品的客户账号》 (1) 方案 1 :通过 VM 后台 - 商品档案导入 - 维护购销合同 -POS 商品管理 ① 优点:移植性高,即如果是导入到线上的库,以后版本迭代后,再做性能测试,随时可以做。而且即使后期用生产数据覆盖预发布库,也可以直接在预发布做测试。 ② 缺点:不能在预发布做,否则丧失上面提到的优点。其次,这种方案操作非常繁琐,以 2W 商品为例,需要分 10 次导入到商品档案,购销合同和 pos 商品管理操作更加繁琐,耗时。 (2) 方案 2 :通过 adb 拉出 pos 端的库,更新商品表,然后再导回去。 ① 优点:操作简单。 ② 缺点:只能往 pos 本地库导入

用户画像产品化涵盖的功能模块以及应用场景

£可爱£侵袭症+ 提交于 2020-10-28 16:42:10
开发画像后的标签数据,如果只是“躺在”数据仓库中,并不能发挥更大的业务价值。只有将画像数据产品化后才能更便于业务方使用。在本 文 中,Web端展示的数据都读取自MySQL这类的关系型数据库,MySQL中存储的数据源自Hive加工后,通过Sqoop同步的结果集。 本 问 主要介绍用户画像产品化后主要可能涵盖到的功能模块,以及这些功能模块的应用场景。 01  即时查询 即时查询功能主要面向数据分析师。将用户画像相关的标签表、用户特征库相关的表开放出来供数据分析师查询。 Hive存储的相关标签表,包括userid和cookieid两个维度。 dw.userprofile_attritube_all:存储用户人口属性维度的标签。 dw.userprofile_action_all:存储用户行为属性维度的标签。 dw.userprofile_consume_all:存储用户消费商品维度的标签。 dw.userprofile_riskmanage_all:存储风控维度的标签。 dw.userprofile_social_all:存储社交维度的标签。 dw.userprofile_cookielabel_map_all:对每个cookieid身上的标签做汇聚后输出。 dw.userprofile_usergroup_labels_all:用户人群分组表。查询应用到业务系统下面

本地使用Navicat远程连接Oracle报错ORA-28547问题解决

倾然丶 夕夏残阳落幕 提交于 2020-10-27 00:43:03
本地使用Navicat远程连接Oracle报错ORA-28547问题解决 参考文章: (1)本地使用Navicat远程连接Oracle报错ORA-28547问题解决 (2)https://www.cnblogs.com/bingdaocaihong/p/10268861.html 备忘一下。 来源: oschina 链接: https://my.oschina.net/stackoom/blog/4690313

Navicat导入json文件到数据库

最后都变了- 提交于 2020-10-24 13:56:19
最近做小程序商城系统,物流管理这块需要存储国际和中国的物流地址。 所以,天哪,地址那么的多!!!! www.baidu.com,搜索大佬是如何做的。有的是通过访问阿里云快递物流api接口获取数据存入数据库。另一种方式是通过导入数据文件保存数据到数据库。 很明显,导入数据文件要方便一些,我这里把数据做成了 .json文件。 数据获取请转到这里 国际物流地址 https://www.cnblogs.com/shenhaha520/p/11038596.html 国内物流地址 https://www.cnblogs.com/shenhaha520/p/11039958.html 我这里使用数据库工具Navicat导入json文件,看似简单的一个操作,其实也是一波三折,我看了很多同学写的博客,感觉都没有写清楚,主要是在“选择一个表行标签”这个地方该选择什么内容没有表达清楚。 我一开始都是选择某个字段,执行到最后都只能匹配到数据库中选择的这个字段,其他的无法匹配到,所以无法导入所有数据。这是最令人苦恼的地方,一直尝试,选择非数据库字段,,成功!! 整理如下: 选择 *.json 选择导入文件 这里是最容易出错的地方,我当时就是一直卡在这里,一定要选择非数据库字段之外的内容(实践所得,具体原理本人并不是很清楚) 这里导入的是整个台湾省的省市区数据,只是做个test,导入所有地区数据也是同样道理

面试官问,你在开发中有用过什么设计模式吗?我懵了

人盡茶涼 提交于 2020-10-17 23:39:46
设计模式不应该停留于理论,跟具体业务结合,它才会变得更香~ 1.前言 设计模式我们多少都有些了解,但是往往也只是知道是什么。 在真实的业务场景中,你有用过什么设计模式来编写更优雅的代码吗? 我们更多的是每天从产品经理那里接受到新需求后,就开始MVC一把梭,面向sql编程了。 我们习惯采用MVC架构,实时上是非常容易创建很多贫血对象模型,然后写出过程式代码。我们使用的对象,往往只是数据的载体,没有任何逻辑行为。我们的设计过程,也是从ER图开始,以数据为中心进行驱动设计。一个需求一个接口,从controller到service到dao,这样日复一日的CRUD。 什么设计模式?根本不存在的! 今天,我们尝试从常用设计模式(工厂模式、代理模式、模版模式)在CRUD中的可落地场景,希望能给大家带来一些启发。 2.理解设计模式 设计模式(Design pattern),不是前人凭空想象的,而是在长期的软件设计实践过程中,经过总结得到的。 使用设计模式是为了让代码具有可扩展性,实现高聚合、低耦合的特性。 世上本来没有设计模式,写代码的人多了,便有了设计模式。 面向对象的设计模式有七大基本原则: 开闭原则(Open Closed Principle,OCP) 单一职责原则(Single Responsibility Principle, SRP) 里氏代换原则(Liskov

使用Navicat将Excel数据导入mysql

可紊 提交于 2020-10-08 01:51:21
前言 其实这个功能挺简单,但是网上没有搜索到比较准确的文字,遂自己写一篇总结下,也方便别人。 环境 先叙述下我的环境,以免由于版本等问题,出现不成功,说我的文章不起作用。 Navicat版本如下: mysql版本:5.7 操作 准备一份excel文件。准备一个待导入数据的表。 首先在excel的头行加上数据库对应的字段。由于我的表是自增id,这块就去掉了id列。 然后将excel的名字改为英文名称。 右键数据库的表,选择Import Wizard..,选择Excel file 然后选择需要导入的excel,点击next 一直next即可,最后确认下,是追加数据,还是覆盖数据,然后next,点击start。直行完成后显示successfully就代表导入成功。 假如出现error查看具体log。 over... 来源: oschina 链接: https://my.oschina.net/u/4414119/blog/4273578

如何解决Cause: java.sql.SQLException: Field ‘id‘ doesn‘t have a default value

最后都变了- 提交于 2020-10-06 07:27:32
在做商品上传功能的时候报了Cause: java.sql.SQLException: Field 'id' doesn't have a default value的错误(主要错误如下),经查询是因为mapper.xml中设置了ID自增长,但是数据库中却没有设置自增长造成的 解决途径: 第一步:检查自己的id是否是int类型,因为我自己设置的是string类型,所以在使用Navicat 时找不到自增的选框 public class FoodEntity { /** * 商品ID */ @TableId private String id; // 这里设置为String 照样会出错 //自动增长的类型是int private int id 第二步:打开Navicat Premium,对需要操作的表点击设计表 第三步:勾选自动增长 再重新启动项目,即可实现相应的操作 来源: oschina 链接: https://my.oschina.net/u/4267086/blog/4531045