
Mysq数据库
工作了这么多年,发现很多基础的、核心的知识理解的不是特别透彻,本专栏旨在记录学到的关于数据库方面的知识点,并分享给大家。如有不正之处,欢迎批评指正。
志波同学
做一个有担当的程序猿,为互联网贡献自己的一份力量
展开
-
在 docker 环境下安装mysql
一、查看 docker 仓库中支持的 mysql 版本查看docker 官方网站中的 mysql 镜像说明了解镜像详情,截至目前,官方支持的 mysql 镜像版本为5.6、5.7、8.0。二、拉取 mysql 镜像拉取最新版本的 mysql 镜像:docker pull mysql拉取指定版本的 mysql 镜像:docker pull mysql:5.7拉取成功后,通过查看镜像...原创 2020-02-07 00:20:35 · 2195 阅读 · 0 评论 -
Mysql:整型数据类型详解,其中有一个知识点是我们比较容易忽略的
Mysql 整型类型TINYINTTINYINT[(M)] [UNSIGNED] [ZEROFILL] M默认为4 8位二进制数。带符号的范围是-128到127。无符号的范围是0到255。SMALLINTSMALLINT[(M)] [UNSIGNED] [ZEROFILL] M默认为616位二进制数。带符号的范围是-32768到32767。无符号的范围是0到6553...原创 2018-05-14 16:20:14 · 1525 阅读 · 0 评论 -
MySQL:浅析 Impossible WHERE noticed after reading const tables
使用 EXPLAIN 执行计划的时候,在 Extra 中偶尔会看到这样的描述:Impossible WHERE noticed after reading const tables字面上的意思是:读取const tables表之后, 没有发现匹配的行。 通过示例我们重现一下该场景。首先创建两张表,班级表(class),学生表(student)。CREATE TABLE `class` ( `i原创 2017-08-25 15:26:01 · 27377 阅读 · 2 评论 -
MySQL EXPLAIN 一: 输出格式详解
本文详细介绍 MySQL 数据库的 EXPLAIN 语句,旨在帮助 MySQL 开发人员更好的通过 EXPLAIN 语句分析 Sql 语句的执行计划。如有不正之处,欢迎批评指正。为了保证内容的权威性,我选择了翻译 Mysql5.7 官方文档8.8.2 EXPLAIN Output Format 章节的内容。英文地址:https://dev.mysql.com/doc/refman/5.7/en/ex翻译 2017-08-23 11:11:11 · 4511 阅读 · 2 评论 -
Activiti5.22:删除工作流引擎自动创建的外键约束
Activiti 工作流引擎自带建库脚本,同时生成了索引、外键等信息。为了降低外键约束对数据库造成的性能影响,我们需要将外键删除,下文描述删除外键的工程。注:在互联网系统设计中尽量保持数据库表的原子性设计。一、查找创建外键的 sql 语句在 Activiti 中databaseSchemaUpdate属性设置建表策略,值为 true 是,如果没有表,自动创建表,否则不自动创建表。在 IntelliJ原创 2017-08-15 18:40:42 · 12365 阅读 · 4 评论 -
Mysql错误:Unable to connect to remote host. Catalog download has failed.
最近由于工作的需要安装了 Mysql5.7.17,之后的每天上午十点都会弹出一个命令行窗口,如下: ===================== Start Initialization ==================== MySQL Installer is running in Community mode. Initializing product requirem原创 2017-08-14 11:07:10 · 21023 阅读 · 6 评论 -
Java编程:悲观锁、乐观锁的区别及使用场景
定义:悲观锁(Pessimistic Lock): 每次获取数据的时候,都会担心数据被修改,所以每次获取数据的时候都会进行加锁,确保在自己使用的过程中数据不会被别人修改,使用完成后进行数据解锁。由于数据进行加锁,期间对该数据进行读写的其他线程都会进行等待。乐观锁(Optimistic Lock): 每次获取数据的时候,都不会担心数据被修改,所以每次获取数据的时候都不会进行加锁,但是在更新数据的时原创 2016-12-31 23:51:10 · 26136 阅读 · 8 评论 -
数据库:Mysql中“select ... for update”排他锁分析
Mysql InnoDB 排他锁用法: select … for update;例如:select * from goods where id = 20018 for update;排他锁的申请前提:没有线程对该结果集中的任何行数据使用排他锁或共享锁,否则申请会阻塞。for update仅适用于InnoDB,且必须在事务块(BEGIN/COMMIT)中才能生效。在进行事务操作时,通过“for upd原创 2017-01-04 19:38:55 · 86896 阅读 · 14 评论 -
数据缓存-数据分级策略
互联网系统的数据可以划分为以下3类: 1、核心业务数据:比如用户订单表、商户订单表 2、用户相关数据:用户基本信息、头像、简介、爱好等 3、配置信息:数据库配置、分库分表配置等如果以上所有数据的读操作数据库上完成,系统的性能将会大打折扣,也正是为了解决这个问题,才出现了memcached、redis等内存数据库,如何合理、高效的使用内存数据库呢?我们引入数据分级的策略来解决这个问题。我们将互联原创 2016-06-06 17:16:07 · 7188 阅读 · 0 评论 -
Spring编程:Spring事务的传播特性和隔离级别
数据库操作面临的问题: 脏读:指当一个事务正在访问数据,并且对数据进行了修改,而这种修改还没有提交到数据库中,这时,另外一个事务也访问这个数据,然后使用了这个数据。因为这个数据是还没有提交的数据, 那么另外一 个事务读到的这个数据是脏数据,依据脏数据所做的操作可能是不正确的。不可重复读:指在一个事务内,多次读同一数据。在这个事务还没有结束时,另外一个事务也访问该同一数据。 那么,在第一个事务中的两原创 2016-06-12 15:30:29 · 6751 阅读 · 1 评论 -
标准SQL规范中定义的四个事务隔离级别
数据库操作面临的问题: 脏读:指当一个事务正在访问数据,并且对数据进行了修改,而这种修改还没有提交到数据库中,这时,另外一个事务也访问这个数据,然后使用了这个数据。因为这个数据是还没有提交的数据, 那么另外一 个事务读到的这个数据是脏数据,依据脏数据所做的操作可能是不正确的。不可重复读:指在一个事务内,多次读同一数据。在这个事务还没有结束时,另外一个事务也访问该同一数据。 那么,在第一个事务中的原创 2016-06-12 15:48:00 · 10683 阅读 · 0 评论 -
【数据库】Join连接
1:INNER JOIN 内连接,也叫等值连接,inner join产生同时符合A表和B表的一组数据。 如图:2:LEFT JOIN 左连接从A表(左)产生一套完整的记录,与匹配的B表记录(右表) .如果没有匹配,右侧将包含null,在Mysql中等同于left outer join。 如图:3:RIGHT JOIN 同Left join,AB表互换即可。 4:Cross join 交原创 2015-10-26 11:11:25 · 4332 阅读 · 0 评论 -
Mysql语法:navicat for mysql 添加注释
在 navicat 中有三种注释的书写方式:以 # 开头的字符串,可以多个 # 连续以 – 开头的字符串,注意:只能是 – ,而且 – 后面需要加一个半角空格以 /* */ 包围的字符串,类似于 Java 中的注释,但是 // 开头是不允许的 SELECT * from s_user; # 这注释持续到行尾SELECT * from s_user; -- 这注释持续到行尾SELE原创 2016-12-05 18:47:55 · 39878 阅读 · 4 评论 -
【数据库】关系型数据库和NoSQL数据库
关系型数据库,是建立在关系模型基础上的数据库,其借助于集合代数等数学概念和方法来处理数据库中的数据。主流的oracle、DB2、MS SQL Server和mysql都属于这类传统数据库。NoSQL数据库,全称为Not Only SQL,意思就是适用关系型数据库的时候就使用关系型数据库,不适用的时候也没有必要非使用关系型数据库不可,可以考虑使用更加合适的数据存储。主要分为临时性键值存储(memcac原创 2015-10-23 11:35:51 · 6732 阅读 · 0 评论