
mysql
文章平均质量分 73
it噩梦
好记性不如烂笔头
展开
-
索引及常见SQL优化总结
文章目录索引概述介绍优缺点索引结构二叉树B-Tree(多路平衡查找树)B+TreeHashHash索引特点存储引擎支持为什么InnoDB存储引擎选择使用B+tree索引结构?索引分类InnoDB主键索引的B+tree高度为多高呢?索引语法创建索引查看索引删除索引SQL性能分析SQL执行频率慢查询日志profile详情explain执行计划索引使用最左前缀法则范围查询索引列运算字符串不加引号模糊查询or连接的条件数据分布影响SQL提示覆盖索引前缀索引单列索引与联合索引SQL优化插入数据insert优化主键优化原创 2022-02-25 13:05:33 · 1105 阅读 · 1 评论 -
浅析Innodb中MVCC
文章目录MVCC-基本概念MVCC-实现原理MVCC-基本概念当前读读取的是记录的最新版本,读取时还要保证其他并发事务不能修改当前记录,会对读取的记录进行加锁。对于我们日常的操作,如:select ... lock in share mode(共享锁),select ... for update、update、insert、delete(排他锁)都是一种当前读。快照读简单的select(不加锁)就是快照读,快照读,读取的是记录数据的可见版本,有可能是历史数据,不加锁,是非阻塞读。Re原创 2022-02-22 23:15:00 · 354 阅读 · 0 评论 -
浅析事务原理
文章目录事务原理redo log 持久性undo log 原子性事务原理事务事务 是一组操作的集合,它是一个不可分割的工作单位,事务会把所有的操作作为一个整体一起向系统提交或撤销操作请求,即这些操作要么同时成功,要么同时失败。特性原子性(Atomicity):事务是不可分割的最小操作单元,要么全部成功,要么全部失败。一致性(Consistency):事务完成时,必须使所有的数据都保持一致状态。隔离性(Isolation):数据库系统提供的隔离机制,保证事务在不受外部并发操作影响的原创 2022-02-22 22:00:00 · 1494 阅读 · 0 评论 -
浅析Innodb架构
逻辑结构默认的表空间位置在/var/lib/mysql架构内存架构show variables like ‘%hash_index%’; 默认是关闭的。查看默认缓冲区大小mysql> show variables like '%log_buffer_size%';+------------------------+----------+| Variable_name | Value |+--------------------原创 2022-02-22 23:30:00 · 1344 阅读 · 0 评论 -
mysql锁相关
文章目录概述全局锁表级锁表锁元数据锁( meta data lock, MDL)意向锁行级锁概述介绍锁是计算机协调多个进程或线程并发访问某一资源的机制。在数据库中,除传统的计算资源(CPU、RAM、I/O)的争用以外,数据也是一种供许多用户共享的资源。如何保证数据并发访问的一致性、有效性是所有数据库必须解决的一个问题,锁冲突也是影响数据库并发访问性能的一个重要因素。从这个角度来说,锁对数据库而言显得尤其重要,也更加复杂。分类MySQL中的锁,按照锁的粒度分,分为以下三类:全局锁:.原创 2022-02-18 22:14:09 · 895 阅读 · 0 评论 -
使用wireshark分析mysql协议
问在前面客户端建⽴连接 —> 执⾏sql —> 断开连接,⼀次完整的交互是怎么样的?⼀条【show databases】命令的通信包⻓什么样?使用wireshark抓取mysql协议下载链接: https://www.wireshark.org/1、首先配置下监听的端口号,默认是3306,需要配置成你自己mysql server的port。2、选择监听的网络3、过滤mysql协议4、登陆mysql服务器mysql网络协议mysql命令执行Client.原创 2021-12-29 22:15:00 · 5965 阅读 · 1 评论 -
sharding-ui实现sharding-proxy动态更新分库分表规则
前言之前搭建了sharding-proxy,提供给客户端只有一个数据库连接,但是每次更新都需要重启服务,比较麻烦,看了下官方文档,支持zookeeper更新,还提供了页面更新,这里给出详细的搭建步骤。环境中间件版本zookeeper3.4.13sharding-proxy4.1.1sharding-ui4.1.1zookeeper搭建这个之前搭建过,可以查看之前的文章。shardingsphere下载地址:https://github.com/ap.原创 2020-10-24 12:16:29 · 2922 阅读 · 6 评论 -
基于canal和kafka同步,实现binlog同步mysql
文章目录前言简介Canal 的工作原理canal 工作原理搭建环境安装mysql安装Zookeeper前言最近业务需要监听mysql的binlog日志,于是就看了下canal,下面记录踩到的坑。简介canal [kə’næl],译意为水道/管道/沟渠,主要用途是基于 MySQL 数据库增量日志解析,提供增量数据订阅和消费早期阿里巴巴因为杭州和美国双机房部署,存在跨机房同步的业务需求,实现方式主要是基于业务 trigger 获取增量变更。从 2010 年开始,业务逐步尝试数据库日志解析获取增量变.原创 2020-08-09 12:31:24 · 1539 阅读 · 0 评论 -
sharding-proxy整合Haproxy实现高可用
实验准备haproxy 安装包:haproxy-1.7.8.tar.gz,下载地址:https://src.fedoraproject.org/repo/pkgs/haproxy/主机准备主机IPhaproxy192.168.56.121sharding-proxy1192.168.56.119sharding-proxy2192.168.56.120安装haproxy安装依赖包 yum install gcc gcc-c++ make aut.原创 2020-07-24 14:06:34 · 2537 阅读 · 2 评论 -
sharding-proxy使用docker部署
前言实际运用中,一定是要容器化部署的,所以需要打成镜像,官方也给出了基础镜像,我们可以参考官方给出的,链接如下:https://shardingsphere.apache.org/document/current/cn/user-manual/shardingsphere-proxy/,然而根据前一篇博客,我们需要定义自己的分片规则,需要将我们jar打到proxy的lib目录下面,我们不得不自己大镜像了。搭建步骤看下目录如下:-rwxrwxrwx. 1 root root 79 Ju.原创 2020-07-24 12:50:04 · 2345 阅读 · 0 评论 -
sharding-proxy自定义规则
文章目录前言搭建步骤编写规则,打成`jar`包pom依赖自定义分片规则启动前言实际开发中,分片规则有可能我们是自定义的,这个时候我们怎么让sharding-proxy读到我们自己分片规则,其实sharding-proxy是做了spi机制的,允许我们扩展规则的。这个分片规则是参考之前github给出的分片规则,链接为 https://github.com/fafeidou/fast-cloud-nacos/blob/master/fast-common-examples/fast-common-sh.原创 2020-07-24 12:49:34 · 3361 阅读 · 0 评论 -
Sharding Proxy搭建
前言项目中使用sharding-jdbc分库分表,带来一个问题就是,我们查询的时候很不方便,找了一下sharding-proxy可以解决这个问题,它的主要思路是将多个库的连接做成一个代理连接,再加上我们配置的策略,从而实现分库分表下客户端操作很方便。本文是基于之前博客sharding-proxy的策略去做的,不明白的可以看之前的博客-----搭建步骤下载文件,解压文件http://mirror.bit.edu.cn/apache/incubator/shardingsphere/4.0.0-R.原创 2020-07-24 12:48:56 · 1185 阅读 · 0 评论 -
mysql简单总结
行锁的类型共享锁(s):又称读锁。允许一个事务去读一行,阻止其他事务获得相同数据集的排他锁。若事务T对数据对象A加上S锁,则事务T可以读A但不能修改A,其他事务只能再对A加S锁,而不能加X锁,直到T释放A上的S锁。这保证了其他事务可以读A,但在T释放A上的S锁之前不能对A做任何修改。 SELECT * FROM table_name WHERE ... LOCK IN SHARE MODE用SELECT … IN SHARE MODE获得共享锁,主要用在需要数据依存关系时来确认某行记录是.原创 2020-05-22 10:52:24 · 292 阅读 · 0 评论 -
浅析Spring事务传播机制
文章目录基本概念案例分析案例一:常规情况案例二:try-required案例三:try-requiresNew案例四:常规情况解密案例一案例二案例三案例四原理踩坑基本概念Spring的事务传播机制有以下七种PROPAGATION_REQUIRED:Spring的默认传播级别,如果上下文中存在事务则加入当前事务,如果不存在事务则新建事务执行。PROPAGATION_SUPPORTS:...原创 2020-03-26 14:41:48 · 265 阅读 · 0 评论 -
docker搭建mysql主从搭建及Sharding-Jdbc读写分离
文章目录理解读写分离docker环境mysql主从搭建实现sharding-jdbc读写分离Sharding-JDBC规则测试理解读写分离面对日益增加的系统访问量,数据库的吞吐量面临着巨大瓶颈。 对于同一时刻有大量并发读操作和较少写操作类型的应用系统来说,将数据库拆分为主库和从库,主库负责处理事务性的增删改操作,从库负责处理查询操作,能够有效的避免由数据更新导致的行锁,使得整个系统的查询性...原创 2020-03-21 22:59:15 · 566 阅读 · 0 评论 -
Sharding-Jdbc水平分库及公共表
文章目录前言创建数据库分片规则配置数据操作测试公共表创建数据库数据操作字典操作测试前言垂直分库是指按照业务将表进行分类,分布到不同的数据库上面,每个库可以放在不同的服务器上,它的核心理念是专库专用。接下来看一下如何使用Sharding-JDBC实现垂直分库。创建数据库创建数据库user_dbCREATE DATABASE `user_db` CHARACTER SET 'utf8' ...原创 2020-03-21 23:00:04 · 719 阅读 · 0 评论 -
Sharding-Jdbc水平分库
:事务中包含的操作被看作一个整体的业务单元, 这个业务单元中的操作要么全部成功,要么全部失败,不会出现部分失败、部分成功的场景。Consistency (一致性):事务在...原创 2020-01-31 14:03:06 · 246 阅读 · 0 评论 -
【mysql】 踩坑记录之derived(派生表)
前言很多时候我们常常感觉到,不要你以为,mysql要它以为。记录派生表踩坑记录。首先说明环境mysql5.7,脚本如下CREATE TABLE `emp` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(255) DEFAULT NULL, `sal` float(255,0) DEFAULT NULL, `...原创 2019-12-31 13:40:28 · 2265 阅读 · 0 评论