mysql
文章平均质量分 92
强哥叨逼叨
微信公众号:强哥叨逼叨
展开
-
MySQL分区表的正确使用方法
MySQL分区表概述我们经常遇到一张表里面保存了上亿甚至过十亿的记录,这些表里面保存了大量的历史记录。 对于这些历史数据的清理是一个非常头疼事情,由于所有的数据都一个普通的表里。所以只能是启用一个或多个带where条件的delete语句去删除(一般where条件是时间)。 这对数据库的造成了很大压力。即使我们把这些删除了,但底层的数据文件并没有变小(mysql不是实际删除_MySQL删除操作其实是假删除)。面对这类问题,最有效的方法就是在使用分区表。最常见的分区方法就是按照时间进行分区。分区一个最大转载 2021-07-23 15:57:42 · 487 阅读 · 0 评论 -
MySQL读写分离:如何解决写完读不到问题
文章转自:程序员历小冰今天我们来详细了解一下主从同步延迟时读写分离发生写后读不到的问题,依次讲解问题出现的原因,解决策略以及 Sharding-jdbc、MyCat 和 MaxScale 等开源数据库中间件具体的实现方案。写后读不到问题MySQL 经典的一主两从三节点架构是大多数创业公司初期使用的主流数据存储方案之一。主节点处理写操作,两个从节点处理读操作,分摊了主库的压力。但是,有时候可能会遇到执行完写操作后,立刻去读发现读不到或者读到旧状态的尴尬场景。这是由于主从同步可...转载 2021-03-25 14:28:15 · 456 阅读 · 0 评论 -
一起学习Mysql索引三(ICP,索引条件下推)
上一篇文章一起学习Mysql索引二(索引的高性能策略)中我们提到了Mysql5.7版本的一个改进:"索引条件下推"(index condition pushdown)。那么,今天就让我们来揭开它的神秘面纱。从ICP(index condition pushdown)的字面意思来看,大家疑惑的点应该就是这个"pushdown"--下推了。什么是下推,下推到哪里,有什么用?带着疑问,我们先从关闭和...原创 2019-07-10 19:34:09 · 969 阅读 · 0 评论 -
一起学习Mysql索引二(索引的高性能策略)
通过上一篇的学习,我们理解了Mysql索引背后的数据结构以及MyISAM和InnoDB两个存储引擎中BTree索引的实现原理。理解了索引背后的机制之后,强哥今天就和大家聊一聊Mysql索引的优化。不过在此之前我们需要先了解一些概念: 三星系统 索引的选择性 BTree索引的限制 三星系统首先我们先来了解一下如何评价一个索引是否适合某个查询的“三星系统”:索引将...转载 2019-06-25 22:08:12 · 212 阅读 · 0 评论 -
一起学习Mysql索引一(索引的数据结构)
相信大家在使用Mysql的时候,为了提高查询效率或多或少的会使用到索引。然而,在建立索引的时候,你是根据什么去创建索引对应的列的呢:每一个where查询条件建立一条索引?根据查询的列建立联合索引?还是在多列索引中将选择性最高的列放在第一列来建立索引?如果我们不能够对Mysql索引有更深的了解,可能就只能凭借上面的一些经验法则去建立索引,而结果可能并不能达到预期的效果。那么就和强哥一起学习M...转载 2019-06-20 20:31:55 · 233 阅读 · 0 评论 -
Java mysql 处理特殊字符% _
sql中经常用like进行模糊查询,而模糊查询就要用到百分号“%”,下划线“_”这些通配符,其中“%”匹配任意多个字符,“_”匹配单个字符。如果我们想要模糊查询带有通配符的字符串,如“60%”,“user_name”,就需要对通配符进行转义,有两种方式。如下:1、反斜杠是转义符,通过反斜杠来转义%,使其不再是通配符。这里第一个%是通配符,第二个%不是通配符。 selectpercen...原创 2019-05-24 10:35:44 · 4688 阅读 · 0 评论 -
一文理解Mysql MVCC
MVCC就是多版本并发控制。MVCC 是一种并发控制的方法,一般在数据库管理系统中,实现对数据库的并发访问。为什么需要MVCC呢?数据库通常使用锁来实现隔离性。最原生的锁,锁住一个资源后会禁止其他任何线程访问同一个资源。但是很多应用的一个特点都是读多写少的场景,很多数据的读取次数远大于修改的次数,而读取数据间互相排斥显得不是很必要。所以就使用了一种读写锁的方法,读锁和读锁之间不互斥,而写锁...原创 2019-05-23 20:47:31 · 240 阅读 · 0 评论 -
Mysql RR级别依然可能丢失更新数据
上篇推文中,我们了解到Mysql MVCC的相关知识:一文理解Mysql MVCC。今天我们就用学到的相关知识,解决一个问题。我们都知道,Mysql Innodb引擎的默认事务隔离级别是RR可重复读,也就是在同一个事务中,多次读取相同的数据结果相同。而其底层就是通过:“排它锁+MVCC”来实现的。话不多说,我们来看看下面的这个问题:我们可以看到,上面的事务A在更新数据之前,数...原创 2019-05-27 23:55:28 · 1431 阅读 · 0 评论 -
mysql列转行,合并字段
数据表: 列转行:利用max(case when then)max---聚合函数 取最大值(case course when '语文' then score else 0 end) ---判断 as 语文---别名作为列名SELECT `name`, MAX( CASE WHEN course='语文' THEN ...转载 2018-11-19 16:39:37 · 195 阅读 · 0 评论 -
mysql查看死锁和解除锁
解除正在死锁的状态有两种方法:第一种:1.查询是否锁表show OPEN TABLES where In_use > 0;2.查询进程(如果您有SUPER权限,您可以看到所有线程。否则,您只能看到您自己的线程)show processlist3.杀死进程id(就是上面命令的id列)kill id 第二种:1.查看下在锁的事务 SELECT * FR...转载 2018-10-31 17:17:55 · 163 阅读 · 0 评论 -
Mysql 加减乘除运算后结果的小数部分出现多个不精确的值处理
mysql钱存的类型用的varchar类型,然后在更新钱的时候,在相加减某个值得时候会出现运算后结果的小数部分出现多个不精确的值。处理需要用case函数将varchar类型转成decimal然后进行操作,例如:update t set prj_money_use = cast(prj_money_use as decimal(11,2)) + cast(#{returnMoney} as ...原创 2018-07-27 17:23:03 · 8209 阅读 · 0 评论