
MySQL数据库
文章平均质量分 92
MySQL 安装部署、事务锁、索引
huaishu
这个作者很懒,什么都没留下…
展开
-
MySQL加锁分析
前言 最近遇到一次MySQL死锁的问题,也算是少见的一件事情。公司的MySQL隔离级别是Read Commited,已经没有了gap lock,而且代码里的sql都再简单不过,没有显式加锁的sql语句。因此抽出时间看了一下原因。 分析具体问题之前,先整体的了解一下MySQL的加锁逻辑,之后再分析起来就游刃有余了:MySQL的锁 为什么MySQL要加锁呢?OLTP数据库离不开事务,事务也离不开并发操作下一致性的问题。现代数据库解决事务的并发控制有两种办法,2PL和MVCC[1]。 2P转载 2021-01-26 12:25:59 · 452 阅读 · 0 评论 -
MySQL数据库InnoDB存储引擎中的锁机制
00 – 基本概念当并发事务同时访问一个资源的时候,有可能导致数据不一致。因此需要一种致机制来将访问顺序化。锁就是其中的一种机制。我们用商场的试衣间来做一个比喻。试衣间供许多消费者使用。因此可能有多个消费者同时要试衣服。为了避免冲突,试衣间的门上装了锁。试衣服的人在里边锁住,其他人就不能从外边打开了。只有里边的人开门出来,外边的人才能进去。- 锁的基本类型数据库上的操作可以归纳为两中,读和写。多个事务同时读一个对象的时候,是不会有冲突的。同时读和写或者同时写才会产生冲突。因此为了提高并发转载 2021-01-26 11:43:17 · 260 阅读 · 0 评论 -
MySQL 读提交和重复读隔离级别测试实验
Mysql默认隔离级别可重复读,我们会实验读提交和可重复读。set tx_isolation='read-committed';set tx_isolation='repeatable-read';纸上得来终觉浅,要理解它们必须实践一把,当前读、快照一致性读、MVVC等等这些概念必须在实践中理解。读提交测试实验一:未提交读 mysql>set tx_isolatio...原创 2019-07-10 13:20:23 · 976 阅读 · 4 评论 -
MySQL之MVCC原理
什么是MVCMVCC(Multi-Version Concurrency Control)(注:与MVCC相对的,是基于锁的并发控制,Lock-Based Concurrency Control)是一种基于多版本的并发控制协议,只有在InnoDB引擎下存在。MVCC是为了实现事务的隔离性,通过版本号,避免同一数据在不同事务间的竞争,你可以把它当成基于多版本号的一种乐观锁。当然,这种乐观锁...原创 2019-05-08 12:16:19 · 31037 阅读 · 12 评论 -
一个最不可思议的 MySQL 死锁分析
死锁问题背景做MySQL代码的深入分析也有些年头了,再加上自己10年左右的数据库内核研发经验,自认为对于MySQL/InnoDB的加锁实现了如指掌,正因如此,前段时间,还专门写了一篇洋洋洒洒的文章,专门分析MySQL的加锁实现细节:《MySQL加锁处理分析》。但是,昨天”润洁”同学在《MySQL加锁处理分析》这篇博文下咨询的一个MySQL的死锁场景,还是彻底把我给难住了。此死锁,完全违背了本人原有的锁知识体系,让我百思不得其解。本着机器不会骗人,既然报出死锁,那么就一定存在死锁的原则,我又重新深入.转载 2021-01-23 17:01:18 · 404 阅读 · 0 评论 -
一个线上SQL死锁异常分析:深入了解事务和锁
一 背景最近线上消费MetaQ的服务频繁报SQL死锁异常,虽然最终可以基于事务自动回滚和逻辑重试保证最终正确性,但若一直放任不管,海量报警日志会掩盖真正需要紧急处理的异常,同时频繁回滚也会降低消费端的吞吐量。个人通过分析线上服务日志、MySQL死锁日志、梳理MySQL在RR级别下的锁机制,找到了真正的问题所在,并对业务处理逻辑进行了优化,特在此整理出来,互相学习提升,如果文中有错误的地方欢迎指正。二 知识储备正所谓“工欲善其事,必先利其器”,在具体介绍CASE背景和解决方案前,先对需要系统了..转载 2021-01-22 09:38:07 · 414 阅读 · 0 评论 -
解决死锁之路 - 常见 SQL 语句的加锁分析
这篇文章将对一些常见的 SQL 语句进行加锁分析,看看我们平时执行的那些 SQL 都会加什么锁。只有对我们所写的 SQL 语句加锁过程了如指掌,才能在遇到死锁问题时倒推出是什么锁导致的问题。在前面的博客中我们已经学习了 MySQL 下不同的锁模式和锁类型,我们要特别注意它们的兼容矩阵,熟悉哪些锁是不兼容的,这些不兼容的锁往往就是导致死锁的罪魁祸首。总体来说,MySQL 中的锁可以分成两个粒度:表锁和行锁,表锁有:表级读锁,表级写锁,读意向锁,写意向锁,自增锁;行锁有:读记录锁,写记录锁,间隙锁,Next-k转载 2021-01-22 09:57:15 · 586 阅读 · 0 评论 -
阿里云 yum安装mysql
1.rpm -Uvh http://dev.mysql.com/get/mysql-community-release-el6-5.noarch.rpm #下载2.yum install yum-utils -y #装源3.yum-config-manager --disable mysql56-community # 禁用MySQL5.6的源4.yum-config-manage...原创 2018-11-15 13:07:22 · 329 阅读 · 0 评论 -
mysql5.7 阿里云安装部署
下载安装包mysql-community-client-5.7.17-1.el7.x86_64.rpmmysql-community-common-5.7.17-1.el7.x86_64.rpmmysql-community-libs-5.7.17-1.el7.x86_64.rpmmysql-community-libs-compat-5.7.17-1.el7.x86_64.rpm原创 2017-12-18 13:10:04 · 688 阅读 · 0 评论 -
mysql 查看当前使用的配置文件my.cnf的方法
备份mysql,除数据文件需要备份外,仍需要备份配置文件,整理查看配置文件方法。1.使用locate my.cnf命令可以列出所有的my.cnf文件[root@iZ94m4komqtZ xgj]# locate my.cnf/etc/my.cnf/etc/my.cnf.d2.查看是否使用了指定目录的my.cnf启动mysql后,我们查看mysql的进程,看看是否有设置使原创 2017-01-25 16:40:00 · 2548 阅读 · 0 评论 -
Linux rpm安装MySQL
mysql 安装原创 2015-02-06 15:31:21 · 1146 阅读 · 0 评论 -
mysql修改端口经验
最近使用RPM安装mysql,因为以前已安装过redmine,导致无法启动mysql,最后通过日志发现端口被占用。MySQL日志文件一般在:/var/log/mysqld.logmysql更改端口修改/etc/my.cnf添加port=3308修改后如下[mysqld]datadir=/var/lib/mysqlsocket=/var/lib/mys原创 2016-06-12 12:51:40 · 3555 阅读 · 0 评论 -
mysql/Java服务端对emoji的支持
mysql数据库插入报错,当初以为sql没有占位符参数方式,最后发现是插入表情符号导致的。网上一通搜索,才发现表情字符是4个字节的utf8字符,不是通常的可变utf8字符集。java.sql.SQLException: Incorrect string value: '\xF0\x9F\x92\x94' for column 'name' at row 1 at com.mys原创 2016-06-27 13:25:37 · 938 阅读 · 0 评论 -
MySQL创建用户的三种方法
mysql 基本管理原创 2016-01-19 10:31:12 · 53484 阅读 · 4 评论 -
Mysql优化配置
Mysql配置优化一、环境介绍Mysql版本:5.6.23二、优化内容字段介绍推荐值skip-locking避免MySQL的外部锁定,减少出错几率增强稳定性back_logMySQL可能的连接数量(linux下推荐小于512原创 2015-02-09 13:48:23 · 522 阅读 · 0 评论 -
mysql性能监控指标
1.系统mysql的进程数ps -ef | grep "mysql" | grep -v "grep" | wc –l2.Slave_runningmysql > show status like 'Slave_running';如果系统有一个从复制服务器,这个值指明了从服务器的健康度3.Threads_connectedmysql > show s原创 2015-02-09 11:32:02 · 543 阅读 · 0 评论 -
mysql集群安装配置
看到阿里去IOE,心动不如行动,搭建实现mysql的集群存储。1. 了解MySQL集群减少数据中心结点压力和大数据量处理,采用把MySQL分布,一个或多个application对应一个MySQL数据库。把几个MySQL数据库公用的数据做出共享数据,例如购物车,用户对象等等,存在数据结点里面。其他不共享的数据还维持在各自分布的MySQL数据库本身中。2. 集群My原创 2015-01-31 19:55:10 · 743 阅读 · 0 评论 -
mysql 基本命令
1、连接Mysql格式: mysql -h主机地址 -u用户名 -p用户密码1、连接到本机上的MYSQL。首先打开DOS窗口,然后进入目录mysql\bin,再键入命令mysql -u root -p,回车后提示你输密码.注意用户名前可以有空格也可以没有空格,但是密码前必须没有空格,否则让你重新输入密码。如果刚安装好MYSQL,超级用户root是没有密码的,故直接回车即......原创 2014-09-17 15:46:30 · 684 阅读 · 0 评论 -
mysql开发报错
错误问题:连接完数据库后执行sql语句报错,好像是版本不对,不支持该sql语句,通过控制台执行sql可以通过,中间sql语句中带有中文。解决:1.检查驱动包是不是最新。2.检查驱动是不是正确配置3.参数是不是有问题。检查后,发现驱动写错了,还有连接时未指定编码导致中文乱码。String url = "jdbc:mysql://localhost原创 2013-07-31 20:10:11 · 576 阅读 · 0 评论