数据表

一次Mariadb死锁排查过程回顾

我的梦境 提交于 2020-02-29 22:33:39
场景 在使用某个平台的时候,有些页面发现长时间,部分数据无法加载成功,开始排查问题。 确定是mariadb的问题的过程 访问了几个页面都是正常的,唯独某几个页面查询实时监控数据时无法加载出来, F12 查看接口发现有几个业务相似的接口长时间不返回数据。 既然整体功能是正常的,只有部分页面出现问题,而且都是实时数据无法显示,怀疑是同一个地方出现问题,于是把接口放在一起发现共同点。 都是 timeout 长时间无响应,而且不是前端资源加载的问题, F12 可以看到一个接口的请求过程,例如下图 查看代码逻辑 ,发现几个接口同时查询过一个表,登陆 mariadb ,发现 SELECT 长时间不返回。怀疑是锁表了。 以下所有示例使用 docker 启动 mysql 演示复现。 我先锁表 lock table test read; lock table test write; 发现是卡住了 mysql> select * from test; mysql> 2013 - Lost connection to MySQL server during query 查看长时间卡住的线程 查询进程(如果您有SUPER权限,您可以看到所有线程。否则,您只能看到您自己的线程) show processlist; 但是此命令只能显示前100条数据,要想看全部的数据,请输入 show full

一次Mariadb死锁排查过程回顾

懵懂的女人 提交于 2020-02-29 20:03:45
场景 在使用某个平台的时候,有些页面发现长时间,部分数据无法加载成功,开始排查问题。 确定是mariadb的问题的过程 访问了几个页面都是正常的,唯独某几个页面查询实时监控数据时无法加载出来, F12 查看接口发现有几个业务相似的接口长时间不返回数据。 既然整体功能是正常的,只有部分页面出现问题,而且都是实时数据无法显示,怀疑是同一个地方出现问题,于是把接口放在一起发现共同点。 都是 timeout 长时间无响应,而且不是前端资源加载的问题, F12 可以看到一个接口的请求过程,例如下图 查看代码逻辑 ,发现几个接口同时查询过一个表,登陆 mariadb ,发现 SELECT 长时间不返回。怀疑是锁表了。 以下所有示例使用 docker 启动 mysql 演示复现。 我先锁表 lock table test read; lock table test write; 发现是卡住了 mysql> select * from test; mysql> 2013 - Lost connection to MySQL server during query 查看长时间卡住的线程 查询进程(如果您有SUPER权限,您可以看到所有线程。否则,您只能看到您自己的线程) show processlist; 但是此命令只能显示前100条数据,要想看全部的数据,请输入 show full

MySQL之SQL演练(四)

此生再无相见时 提交于 2020-02-29 15:21:00
一:准备数据 1.创建数据表 -- 创建 "京东" 数据库 create database jing_dong charset=utf8; -- 使用 "京东" 数据库 use jing_dong; -- 创建一个商品goods数据表 create table goods( id int unsigned primary key auto_increment not null, name varchar(150) not null, cate_name varchar(40) not null, brand_name varchar(40) not null, price decimal(10,3) not null default 0, is_show bit not null default 1, is_saleoff bit not null default 0 )default charset=utf8; 2.插入数据 -- 向goods表中插入数据 insert into goods values(0,'r510vc 15.6英寸笔记本','笔记本','华硕','3399',default,default); insert into goods values(0,'y400n 14.0英寸笔记本电脑','笔记本','联想','4999',default,default);

MySQL数据表操作

懵懂的女人 提交于 2020-02-29 01:56:54
创建数据表 打开数据库 USE 数据库名称 mysql> USE D1; Database changed 使用 USE D1 ;表示打开数据库D1,我们可以通过 SELECT DATABASE(); 来查看当前打开的数据库: mysql> SELECT DATABASE(); +------------+ | DATABASE() | +------------+ | d1 | +------------+ 1 row in set (0.00 sec) 创建数据表 CREATE TABLE [IF NOT EXISTS] table_name ( column_name datatype, ...... ) 这个结构很简单,对于[IF NOT EXISTS],在第一篇 “MySQL基本操作” 已经说明,这里不赘述。 我们来创建一个数据表 table1 : mysql> CREATE TABLE table1( -> username VARCHAR(20), -> age TINYINT UNSIGNED, -> salary FLOAT(8,2) UNSIGNED -> ); Query OK, 0 rows affected (0.74 sec) 注意这里的UNSIGNED,表示无符号值,即是正数,可回顾 “MySQL基本数据类型” 查看,TINYINT UNSIGNED

数据库设计范式

本秂侑毒 提交于 2020-02-28 10:53:59
数据库设计范式是一个很重要的概念,但是这个重要程度只是适合于参考。使用数据库设计范式,可以让数据表更好的进行数据的保存,因为在合理的设计,如果数据量一大也肯定会存在性能上的问题,所以在开发中,唯一可以称为设计的宝典——设计的时候尽量避免日后的程序出现多表关联查询。 第一范式 所谓的第一范式指的是数据表中的数据列不可再分。例如,现有如下一张表: CREATE TABLE member( mid NUMBER PRIMARY KEY, name VARCHAR2(200) NOT NULL, contact VARCHAR2(200) ) 这个时候设计的就不合理,因为联系方式由多种数据所组成(电话、地址、email、手机、邮政编码等),所以这种设计是不符合第一范式的,现在可以修改设计如下: CREATE TABLE member( mid NUMBER PRIMARY KEY, name VARCHAR2(200) NOT NULL, address VARCHAR2(200), zipcode VARCHAR2(6), mobile VARCHAR2(20), tel VARCHAR2(20) ) 但是在这里有两点需要说明。 1、关于姓名,在国外的表设计姓名也分为姓和名两类,但是在中国就是姓名保存。 2、关于生日,生日有专门的数据类型(DATE),所以不能将其设置为生日年、生日月

java数据表生成实体类

风格不统一 提交于 2020-02-27 13:12:25
package com.sbr; import java.io.File; import java.io.FileWriter; import java.io.IOException; import java.io.PrintWriter; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSetMetaData; import java.sql.SQLException; import java.util.Date; public class GenEntityMysql { private String packageOutPath = "com.sbr";//指定实体生成所在包的路径 private String authorName = "wy";//作者名字 private String[] colnames; // 列名数组 private String[] colTypes; //列名类型数组 private int[] colSizes; //列名大小数组 private boolean f_util = false; // 是否需要导入包java.util.* private

MYSQL 数据库基本操作

心已入冬 提交于 2020-02-26 22:18:17
插入数据 在建立一个空的数据库和数据表时,首先需要考虑的是如何向数据表中添加数据,该操作可以使用INSERT语句来完成。使用INSERT语句可以向一个已有数据表插一个新行,也就插入一行新记录。 在MySQL中,INSERT语句有3种语法格式,分别是INSERT... VALUES语句、INSERT... SET语句和INSERT... SELECT语句。 使用INSERT... VALUES语句插入数据 使用INSERT... VALUES语句插入数据,是INSERT语句的最常用的语法格式。 语法格式如下: INSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE] [INTO] 数据表名 [(字段名,...)] VALUES ({值 | DEFAULT},...),(...),... [ ON DUPLICATE KEY UPDATE 字段名=表达式, ... ] 例子: create database test; #创建库 use test; #进入库 create table info (id int not null,name char(16),score decimal(5,2),age int(8)); #创建表 插入测试数据 insert into info (id,name,score,age)values(1,

MySQL的修改和删除数据表字段

ⅰ亾dé卋堺 提交于 2020-02-26 18:51:27
MySQL的修改和删除数据表字段 写在前面: 注意,所有的字段名,最好都用``包裹! 1、修改表名 2、增加表的字段(id,name,age这种就是字段) 3、修改表的字段(重命名字段+修改字段的类型和约束) 4、删除表的字段 1. 修改表名 -- 修改表名,格式:ALTER TABLE 旧表名 RENAME AS 新表名; -- 修改表名,格式:ALTER TABLE 旧表名 RENAME AS 新表名;ALTER TABLE teacher RENAME AS teacher_1; 2. 增加表的字段(id,name,age这种就是字段) -- 增加表的字段,格式:ALTER TABLE 表名 ADD 字段名 列属性;ALTER TABLE teacher_1 ADD age INT(11); 3. 修改表的字段(两类) 3.1. 重命名字段+改字段属性二合一 -- 1、重命名字段+改字段属性二合一:格式:ALTER TABLE 表名 CHANGE 旧的字段名 新的字段名 列属性(长度);ALTER TABLE teacher_1 CHANGE age age1 VARCHAR(10); 3.2. 仅改字段属性 -- 2、仅改字段属性:格式:ALTER TABLE 表名 MODIFY 字段名 列属性(长度);ALTER TABLE teacher_1 MODIFY age1

MYSQL 数据库基本操作

二次信任 提交于 2020-02-26 18:05:54
插入数据 在建立一个空的数据库和数据表时,首先需要考虑的是如何向数据表中添加数据,该操作可以使用INSERT语句来完成。使用INSERT语句可以向一个已有数据表插一个新行,也就插入一行新记录。 在MySQL中,INSERT语句有3种语法格式,分别是INSERT... VALUES语句、INSERT... SET语句和INSERT... SELECT语句。 使用INSERT... VALUES语句插入数据 使用INSERT... VALUES语句插入数据,是INSERT语句的最常用的语法格式。 语法格式如下: INSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE] [INTO] 数据表名 [(字段名,...)] VALUES ({值 | DEFAULT},...),(...),... [ ON DUPLICATE KEY UPDATE 字段名=表达式, ... ] 例子: create database test; #创建库 use test; #进入库 create table info (id int not null,name char(16),score decimal(5,2),age int(8)); #创建表 插入测试数据 insert into info (id,name,score,age)values(1,

9420 工具箱-数据表处理工具

跟風遠走 提交于 2020-02-26 15:05:22
数据表处理工具 此工具用于数据表的搜索,及使用模板生成代码,表关系建立,级联表数据删除,快速建表 支持 mysql,postgresql,oracle 项目地址: https://gitee.com/sanri/sanri-tools-maven 背景 使用过 mybatis 的代码生成和网上一些代码生成,但都是需要二次修改,包括基本类,包名,工具类等,如果能获取到元数据,可以自定义模板,将方便很多。 数据库配置 配置数据库信息,可以有两种方式进行配置 src/main/resources/com/sanri/config/jdbcdefault.properties (永久配置) 打开 sql 客户端工具,增加连接 (临时配置) 打开数据表配置工具,添加连接(这将会保存在你的本地缓存中,只会保存最后一次的配置,但对于服务器还是临时配置) 基本使用 选择连接和数据库,将会自动刷新出所有表信息 可以刷新连接和数据库,点击右边刷新按扭,绿色的添加按扭用于临时添加连接,永久添加连接需要在配置文件中配置 搜索表,有两种搜索方式 直接搜索,可搜索表名,表注释,列,列注释 指定域搜索,可只搜表或列 table:表名 或 column:列名 在超过 10 个字符后将会键入字符将会直接发起搜索,或者你可以按下回车键,右边按扭只是一个摆设 层级功能 点击【多表方案生成】