随笔分类 -  MySQL

摘要:项目中有一张表是记录人员,在每个新用户调用接口认证通过了之后,会有一个往该表插入这个新用户信息的操作。 但是在线上环境中,发现该表的自增id不连续,且间隔都是差了2,比如上一个人的id是10,下一个人的id就是12,而在前端页面中,一个用户认证通过后,会调用3个接口,初步排查是MySQL并发操作导致 阅读全文
posted @ 2020-02-01 15:38 tonglin0325 阅读(6718) 评论(0) 推荐(0) 编辑
摘要:场景:两个用户同时读取了数据库中的一条记录,此时用户A对其中一个字段的值进行了修改操作并进行了提交,后来用户B也对这个字段进行了修改,用户B的提交将会覆盖用户A提交的值 乐观锁和悲观锁 悲观锁: 每次去取数据,很悲观,都觉得会被别人修改,所以在拿数据的时候都会上锁。 简言之,共享资源每次都只给一个线 阅读全文
posted @ 2019-10-23 11:00 tonglin0325 阅读(4163) 评论(0) 推荐(1) 编辑
摘要:1.下载mysql的repo源 wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm 2.安装mysql-community-release-el7-5.noarch.rpm包 sudo rpm -ivh mysql- 阅读全文
posted @ 2017-11-28 15:11 tonglin0325 阅读(803) 评论(1) 推荐(1) 编辑
摘要:1.MySQL的存储路径 mysql> SHOW VARIABLES LIKE 'datadir'; + + + | Variable_name | Value | + + + | datadir | /var/lib/mysql/data/ | + + + 1 row in set (0.01 s 阅读全文
posted @ 2017-03-27 11:38 tonglin0325 阅读(278) 评论(0) 推荐(0) 编辑
摘要:MySQL存储过程是一个事先编译好并存储在数据库中的一组 SQL 语句集合,类似于程序中的子程序或函数。 存储过程可以接受参数、执行一系列 SQL 语句,并返回结果。存储过程可以大大简化复杂的查询和数据处理操作,并提高数据库性能和安全性。 假设有3张表,歌曲表song,歌手表singer,歌曲和歌手 阅读全文
posted @ 2016-03-22 10:00 tonglin0325 阅读(139) 评论(0) 推荐(0) 编辑
摘要:1.安装mysql-server sudo apt-get update sudo apt-get install mysql-server mysql-client 2.重新启动mysql服务 sudo service mysql restart 3.让apache支持mysql sudo apt 阅读全文
posted @ 2016-03-20 17:27 tonglin0325 阅读(505) 评论(0) 推荐(0) 编辑
摘要:ACID ACID 是数据库事务管理的四个关键属性,用于确保数据在并发环境下的可靠性和一致性。 1.Atomicity(原子性) 原子性指的是一个事务中的所有操作要么全部执行成功,要么全部不执行。换句话说,事务是不可分割的最小单位。ACID模型的原子性主要涉及InnoDB事务。 例如,在银行转账操作 阅读全文
posted @ 2016-03-17 16:20 tonglin0325 阅读(167) 评论(0) 推荐(0) 编辑
摘要:1.docker部署MySQL amd64的机器可以使用centos的MySQL5.7的镜像:https://hub.docker.com/r/centos/mysql-57-centos7/ arm64和amd64的机器也可以使用MySQL8.0的镜像:https://hub.docker.com 阅读全文
posted @ 2016-03-11 15:10 tonglin0325 阅读(227) 评论(0) 推荐(0) 编辑
摘要:MySQL的架构可以分成连接层,Server层和存储引擎层。 undo log 和 redo log 是 MySQL InnoDB 存储引擎管理的数据日志类型,它们主要用于支持事务的 ACID 特性,即原子性、一致性、隔离性和持久性。 1.Undo Log(回滚日志) undo log 用于支持事务 阅读全文
posted @ 2015-08-20 00:24 tonglin0325 阅读(273) 评论(0) 推荐(0) 编辑
摘要:多表连接查询 # 返回的是两张表的乘积 SELECT * FROM tb_emp,tb_dept SELECT COUNT(*) FROM tb_emp,tb_dept # 标准写法,每个数据库都能这么写 SELECT * FROM tb_emp CROSS JOIN tb_dept # 内连接 只 阅读全文
posted @ 2015-07-20 12:23 tonglin0325 阅读(388) 评论(0) 推荐(0) 编辑
摘要:MySQL函数官方文档可以参考:https://dev.mysql.com/doc/refman/5.7/en/functions.html 1.内置函数和运算符 参考:https://dev.mysql.com/doc/refman/5.7/en/built-in-function-referen 阅读全文
posted @ 2015-07-19 23:52 tonglin0325 阅读(255) 评论(0) 推荐(0) 编辑
摘要:有关数据库的DML操作 -insert into -delete、truncate -update -select -条件查询 -查询排序 -聚合函数 -分组查询DROP、TRUNCATE、DELETE-DELETE删除数据,保留表结构,可以回滚,如果数据量大,很慢,... 阅读全文
posted @ 2015-07-18 16:46 tonglin0325 阅读(290) 评论(0) 推荐(0) 编辑
摘要:1.数据库约束简介 1.约束是在表上强制执行的数据检验规则,约束主要用于保证数据库的完整性。 2.当表中数据有相互依赖性时,可以保护相关的数据不被删除。 3.大部分数据库支持下面五类完整性约束: - NOT NULL非空 - UNIQUE Key唯一值 - PRIMARY KEY主键 - FOREI 阅读全文
posted @ 2015-07-16 13:12 tonglin0325 阅读(369) 评论(0) 推荐(0) 编辑
摘要:SQL——结构化查询语言(Structured Query Language) 1. 字符集和大小写 SQL语言不区分大小写,建议关键字用大写,但是字符串常量区分大小写 字符集 character_set_client:服务器将系统变量character_set_client作为客户端发送语句时使用 阅读全文
posted @ 2015-07-14 19:25 tonglin0325 阅读(220) 评论(0) 推荐(0) 编辑
摘要:1.常见SQL注入的方法 假设我们使用goland的GORM框架写了以下面SQL err := u.data.db.Raw("select id, username, email from user where username = '" + s + "'").Scan(&user).Error i 阅读全文
posted @ 2015-06-29 13:01 tonglin0325 阅读(1029) 评论(0) 推荐(0) 编辑
摘要:1.索引(index) 可以通过在数据库中创建index来加速对表的查询,index可以避免对表的一个全面扫描。对于主键和唯一键,会自动在上面创建索引。 通过使用快速路径访问方法快速定位数据,减少了磁盘的I/O 与表独立存放,但不能独立存在,必须属于某个表 由数据库自动维护,表被删除时,该表上的索引 阅读全文
posted @ 2015-06-19 20:05 tonglin0325 阅读(191) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示