![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
mysql
LUK流
大数据/java web
展开
-
为什么mysql使用innodb替代了myisam的一些思考?
关于innodb和mysiam的区别:https://blog.csdn.net/qq_35688140/article/details/101936797myisam使用的非聚簇索引如下:(假设只有两个字段 id和name)innodb的聚簇索引:叶子页包含行的全部数据(辅助索引查询依赖聚簇索引)对比一:读写性能–myisam优于innodb对比过程参考:https://zhuan...原创 2019-11-26 21:40:34 · 1267 阅读 · 0 评论 -
mysql(九): innoDB各种锁机制(解释普通索引和唯一索引锁算法的区别)
1.各种锁机制2 加锁机制乐观锁:假定大概率不会发生并发更新冲突,访问、处理数据过程中不加锁,只在更新数据时再根据版本号或时间戳判断是否有冲突,有则处理,无则提交事务;悲观锁:假定大概率会发生并发更新冲突,访问、处理数据前就加排他锁,在整个数据处理过程中锁定数据,事务提交或回滚后才释放锁;3 锁粒度关于全局锁、行锁、表锁和死锁: https://blog.csdn.net/qq_356...原创 2019-10-06 17:12:42 · 3976 阅读 · 3 评论 -
mysql(八): 全局锁、行锁、表锁和死锁
1.全局锁全局锁就是对整个数据库实例加锁,MySQL 提供了 flush tables with read lock (FTWRL) 的方式去加全局锁。当你需要让整个库处于只读状态的时候,就可以使用这个命令了,之后所有线程的更改操作都会被阻塞。该锁的主要是用在MyISAM这一类引擎对mysql数据备份上的使用。逻辑备份工具是 mysqldump。当 mysqldump 使用参数–single-...原创 2019-10-05 16:42:02 · 741 阅读 · 0 评论 -
mysql(七): 事务---事务隔离和MVCC
1. 概述一般来说,事务是必须满足4个条件(ACID):原子性(Atomicity):构成事务的的所有操作必须是一个逻辑单元,要么全部执行,要么全部不执行。稳定性(一致性 Consistency):数据库在事务执行前后状态都必须是稳定的。隔离性(Isolation):事务之间不会相互影响。可靠性(持久性 Durability):事务执行成功后必须全部写入磁盘。...原创 2019-10-05 15:31:53 · 166 阅读 · 0 评论 -
mysql(六): MySQL日志的补充 --- redo log和binlog
1. redo logMySQL里经常说到的WAL技术,WAL的全称是Write-Ahead Logging,它的关键点就是先写日志,再写磁盘,也就是先写到内存中(少量数据),等不忙的时候再写磁盘上(所有数据汇总)。当有一条记录需要更新的时候,InnoDB引擎就会先把记录写到redo log(粉板)里面,并更新内存,这个时候更新就算完成了。同时,InnoDB引擎会在适当的时候,将这个操作记录更...原创 2019-10-05 15:07:52 · 405 阅读 · 0 评论 -
mysql(五): MySQL性能分析语句show profile
1. 介绍Query Profiler是MYSQL自带的一种query诊断分析工具,通过它可以分析出一条SQL语句的性能瓶颈在什么地方。通常我们是使用的explain,以及slow query log都无法做到精确分析,但是Query Profiler却可以定位出一条SQL语句执行的各种资源消耗情况,比如CPU,IO等,以及该SQL执行所耗费的时间等。不过该工具只有在MYSQL 5.0.37...原创 2019-10-03 16:17:29 · 451 阅读 · 0 评论 -
mysql(四): 慢查询监控
1. 慢查询数据库查询快慢是影响项目性能的一大因素,对于数据库,我们除了要优化 SQL,更重要的是得先找到需要优化的 SQL。MySQL 数据库有一个“慢查询日志”功能,用来记录查询时间超过某个设定值的SQL,这将极大程度帮助我们快速定位到症结所在,以便对症下药。2.查看是否开启慢查询功能参数说明:slow_query_log :是否开启慢查询日志,ON 为开启,OFF 为...原创 2019-10-03 14:41:18 · 1318 阅读 · 0 评论 -
mysql(三): explain,索引优化
1.MySQL性能优化之查看执行计划explain1.1 介绍explainMySQL 提供了一个 EXPLAIN 命令, 它可以对 SELECT 语句进行分析, 并输出 SELECT 执行的详细信息, 以供开发人员针对性优化.使用explain这个命令来查看一个这些SQL语句的执行计划,查看该SQL语句有没有使用上了索引,有没有做全表扫描,这都可以通过explain命令来查看。...原创 2019-10-03 14:24:49 · 164 阅读 · 0 评论 -
mysql(二): 索引
1.索引的类型(1) 索引是在存储引擎中实现的,也就是说不同的存储引擎,会使用不同的索引MyISAM和InnoDB存储引擎:只支持BTREE索引, 也就是说默认使用BTREE,不能够更换MEMORY/HEAP存储引擎:支持HASH和BTREE索引(2) 索引的分类单列索引:普通索引:MySQL中基本索引类型,没有什么限制,允许在定义索引的列中插入重复值和空值,纯粹为了查询数据更快一...原创 2019-10-03 00:46:45 · 429 阅读 · 0 评论 -
mysq(一): mysql架构图
1.mysql架构图1.第一层:对客户端的连接处理、安全认证、授权等,每个客户端连接都会在服务端拥有一个线程,每个连接发起的查询都会在对应的单独线程中执行。2.第二层:MySQL的核心服务功能层,包括查询解析、分析、查询缓存、内置函数、存储过程、触发器、视图等,select操作会先检查是否命中查询缓存,命中则直接返回缓存数据,否则解析查询并创建对应的解析树。如下图,解析器会将命令分类为sel...原创 2019-10-02 18:16:03 · 4990 阅读 · 0 评论 -
雪花算法产生id号
1.雪花算法图解为了避免数据库被入侵,又使用递增序列对数据查询相率较高,使用雪花算法生产一个相对有序的id。一个java中Long占用64位。2.简介我们只需要输入机器id即可产生一个相对递增的id(1)第一个bit默认不使用,标为0即可。(2)第二位是根据时间戳产生(3)工作机器id=机器标志(5位)+数据中心(5位)(4)序列号默认从零开始递增3.算法package co...原创 2019-08-30 11:07:50 · 1615 阅读 · 0 评论