MySQL
ReycoChou
这个作者很懒,什么都没留下…
展开
-
深入MySQL优化-数据库锁
表锁表锁偏向MyISAM存储引擎,开销小,加锁快;无死锁;锁定粒度大,发生锁冲突的概率最高,并发度最低。读锁其他未持有锁的session可读,写阻塞持有锁的session可读不可写session_1session_2获得表mylock的READ锁连接终端当前session可以查询该表记录其他session也可以查询该表的记录当前sess...原创 2019-02-27 20:01:17 · 121 阅读 · 0 评论 -
MySQL架构设计
MySQL架构设计大表和大事务大表带来的问题记录行数巨大,单表超过千万行表数据文件巨大,表数据文件超过10G1.大表对查询的影响,很难在一定的时间内过滤出所需要的数据2.建立索引需要很长时间,MySQL版本<5.5时,建立索引会锁表;MySQL版本>=5.5,建立索引时虽然不会锁表但会引起主从延迟3.修改表结构需要长时间锁表,造成长时间的主从延迟如何处理数据库中的大...原创 2019-07-17 23:51:44 · 320 阅读 · 0 评论 -
MySQL索引详解
索引索引好文章索引是帮助MySQL高效获取数据的数据结构。左边是数据表,最左边是数据记录的物理地址。为了加快Col2的查找,可以维护右边所示的二叉查找树,每个节点分别包含索引键值和一个指向对应记录物理地址的指针我对索引的理解:被设置为索引的字段,比如主键ID,会被设置为索引值并形成树,树中节点包含索引值和data(data的具体实现内容取决于不同的存储引擎)Btree索引B-/B+...原创 2019-07-17 23:26:49 · 119 阅读 · 0 评论 -
深入MyCAT
MyCAT什么是MyCAT?MyCAT相当于MySQL的Server层MySQL相当于MyCAT的存储层MyCAT不存储数据,所有数据存储在MySQL中MyCAT是一个数据库中间层可以实现对后端数据库的分库分表和读写分离对前端应用隐藏了后端数据库的存储逻辑什么是数据库中间层及其作用?实现后端数据库的读写分离及负载均衡对业务数据库进行垂直切分对业务数据库进行水平切分...原创 2019-07-17 23:19:08 · 553 阅读 · 0 评论 -
深入MySL-主从复制与Replication集群
MySQL复制MySQL二进制日志二进制日志记录了所有对MySQL数据库的修改事件,包括了CURD事件和对表结构的修改事件# 查看二进制日志是否启动show variables like 'log_bin'若未开启需要修改my.cnf配置文件log_bin = /var/log/mysql/mariadb-bin如何开启二进制日志二进制日志的格式基于段的格式 binlog_...原创 2019-07-17 23:05:28 · 199 阅读 · 0 评论 -
深入MySL-理解数据库三范式
数据库设计范式数据库的设计范式是数据库设计所需要满足的规范,满足这些规范的数据库是简洁的、结构明晰的,同时,不会发生插入(insert)、删除(delete)和更新(update)操作异常。反之则是乱七八糟,不仅给数据库的编程人员制造麻烦,而且面目可憎,可能存储了大量不需要的冗余信息第一范式数据库表中所有字段都只具有单一属性单一属性的列是由基本的数据类型所构成的设计出来的表是简单的二维...原创 2019-07-17 22:53:20 · 297 阅读 · 0 评论 -
深入MySQL-变量设置相关
本博客内容部分借鉴于此概述MySQL的配置文件涉及到相关变量的概念:. 系统变量. 用户变量用户变量用户变量是指针对当前登录MySQL用户的私有变量,可以先在用户变量中保存值之后引用它,这样可以将值从一个语句传递到另一个语句。用户变量与连接有关,也就是说,一个客户端定义的变量不能被其他客户端看到或使用。当此客户端退出时,该客户端连接的所有变量将自动释放用户变量的形式为@var_...原创 2019-03-28 23:02:48 · 122 阅读 · 0 评论 -
深入MySQL-MVCC实现机制
本文转自概述MVCC是一种多版本并发控制机制。大多数的MySQL事务型存储引擎,如InnoDB等都不使用简单的行锁机制,都配置MVCC-多版本并发控制一起使用。MVCC实现原理MVCC是通过保存数据在某个时间点的快照来实现的,不同存储引擎的MCVV实现是不同的,典型的有乐观并发控制和悲观并发控制。Innodb MVCC主要是为Repeatable-Read事务隔离级别做的。在此隔离级别下,...转载 2019-03-07 14:30:04 · 942 阅读 · 1 评论 -
深入MySQL-事务ACID与隔离级别
本文转自此博客ACID事务是由一组SQL语句组成的逻辑执行单元,事务具有以下4个属性,通常简称为事务的ACID属性原子性(Atomicity)事务是一个原子操作单元,其对数据的修改,要么全执行,要么全都不执行。在DBMS中,默认情况下一条SQL就是一个单独事务,事务是自动提交的。只有显式的使用start transaction开启一个事务,才能将一个代码块放在事务中执行一致性(Consi...转载 2019-03-07 13:25:17 · 139 阅读 · 0 评论 -
深入MySQL优化-查询截取分析
如何进行MySQL优化慢查询的开启并捕获explain+慢SQL分析show profile查询SQL在SQL在MySQL服务器里面的执行细节和生命周期情况SQL数据库服务器的参数调优查询优化永远小表驱动大表(类似嵌套循环NestedLoop)order by关键字优化group by关键字优化小表驱动大表for(int i=5...)//1{ for(int ...原创 2019-02-27 11:05:23 · 242 阅读 · 0 评论 -
深入MySQL优化-索引失效
避免索引失效尽量选择全值匹配最佳左前缀法则:如果索引了多列,要遵守最左前缀法则。指的是查询从索引的最左前列开始且不跳过索引中的列。不要在索引列上做任何(计算,函数,类型转换),会导致索引失效而转向全表扫描尽量使用覆盖索引(只访问索引的查询(索引列和查询列一致)),减少select*MySQL在使用不等于(!=或者&lt;&gt;)(因为!=实际上是个范围)时的时候无法使用索引会导致全表...原创 2019-02-26 21:30:18 · 173 阅读 · 0 评论 -
深入MySQL优化-索引优化
环境搭建#查询category_id为1且comments大于1的情况下,views最多的article_idexplain select id,author_idfrom articlewhere category_id=1 and comments&amp;amp;amp;gt;1ORDER BY viewslimit 1;Explain:type为ALLExtra:Using filesor...原创 2019-02-26 15:15:15 · 129 阅读 · 0 评论 -
深入MySQL优化-性能分析
MySQL Query OptimizerMySQL中有专门负责优化SELECT语句的优化器模块,主要功能:通过计算分析系统中收集到的统计信息,为客户端请求的Query提供他认为最优的执行计划。当客户端向MySQL请求一条Query,命令解析器模块完成请求分类,区别出是SELECT并转发给MySQL Query Optimizer时,MySQL Query Optimizer首先会对整条Que...原创 2019-02-26 13:49:02 · 232 阅读 · 0 评论 -
深入MySQL优化-索引简介
何为索引MySQL官方对索引的定义:索引(index)是帮助MySQL高效获取数据的数据结构,可以简单的理解为快速查找数据结构。索引用于快速找出在某个列中具有某一特定值的行,不使用索引,MySQL必须从第一条开始读完整个表,直到找出相关行。建立列索引,索引在底层对字段中数据进行排序,将会在查询时节省很大一部分时间。所有的列类型(字段类型)都可以设置索引,索引将大大加快查询速度。一般来说索引本身也...原创 2019-02-25 22:03:17 · 113 阅读 · 0 评论 -
深入MySQL优化-架构简介及JOIN理论
概述MySQL架构连接层:最上层是一些客户端和连接服务,包含本地sock通信和大多数基于客户端/服务端工具实现的类似tcp/ip的通信。主要完成一些连接处理,授权认证及相关的安全方案。在该层引入了线程池的概念,为通过认证安全接入的客户端提供线程,同样在该层上可以实现基于SSL的安全链接,服务器也会为安全接入的每个客户端验证它具有的操作权限。服务层:第二层架构主要完成核心服务功能,如SQL...原创 2019-02-25 19:43:10 · 162 阅读 · 0 评论 -
电商项目中的数据库
新零售数据库设计SPU先讲下产品和商品的关系:举栗子来说的话,库克在苹果发布会上发布的IPhnoe,这个属于产品,而我们购买的不同内存配置等,如256G、128G的手机这个就是商品。商品是产品的不同销售方案。SPU指标准产品单位,SPU描述一个产品的各种特性SKUSKU是库存进出计量的单位,SKU是物理上不可分割的最小存货单元。SKU实际上就是具体的商品SKU与参数如何对应不同商品有...原创 2019-07-18 00:05:15 · 2605 阅读 · 1 评论