![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
mysql
夕时明月
分享的过程也是自我更新的过程;进步源自点滴的积累
展开
-
mysql 存储引擎
Mysql的存储引擎是插件式的,同一个数据库中的不同表可以使用不同的存储引擎.存储引擎是表级别的概念原创 2017-11-29 10:58:51 · 135 阅读 · 0 评论 -
mysql not exists 和 not in对比
not exists比not in效率高;如果查询语句使用了not in 那么内外表都进行全表扫描,没有用到索引;而not extsts 的子查询依然能用到表上的索引。所以无论那个表大,用not exists都比not in要快。原创 2017-11-27 21:54:44 · 8914 阅读 · 0 评论 -
mysql exists和not exists使用
EXISTS代表存在量词∃。带有EXISTS谓词的子查询不返回任何数据,只产生逻辑真值“true”或者逻辑假值“false”转载 2017-11-27 22:00:01 · 2096 阅读 · 0 评论 -
mysql关于null值的使用
null值只能用is null ,is not null和ifnull()判断,不能进行任何比较运算,其他=,!=,in,not in...与null的比较都无任何数据返回;查询结果集中只有is null ,is not null会对列中的null做筛选,其他查询条件只对列中的非null值进行比较和过滤(此时此列中null值所在的行可以说不存在);我们应该把null理解为一种特殊字符,它既不是空值('')也不是实值,它就是null;原创 2017-11-27 20:45:59 · 283 阅读 · 0 评论 -
mysql in 和or区别
如果in和or所在列有索引或者主键的话,or和in没啥差别,执行计划和执行时间都几乎一样;如果in和or所在列没有 索引的话,性能差别就很大了。在没有索引的情况下,随着in或者or后面的数据量越多,in的效率不会有太大的下降,但是or会随着记录越多的话性能下降 非常厉害转载 2017-11-27 22:03:58 · 4636 阅读 · 0 评论 -
mysql exists与in的异同
使用in查询的目的是让外层查询走索引,优化方向是提升外层查询的查询效率;使用exists查询的目的是让内层子查询走索引,优化方向是提升内层子查询的查询效率原创 2017-11-27 21:51:39 · 217 阅读 · 0 评论 -
mysql乐观锁和悲观锁
乐观锁认为一般情况下对记录的修改不会发生冲突,所以在数据最后提交更新的时候,才会正式对数据的冲突与否进行检测.如果发现修改冲突,业务逻辑什么都不做,将错误信息告诉客户端,由客户端决定如何处理原创 2017-11-28 08:24:46 · 348 阅读 · 0 评论 -
mysql 锁策略
表级锁: 通常发生在DDL语句\DML不走索引的语句中,比如这个DML update table set columnA=”A” where columnB=“B”. 如果columnB字段不存在索引(或者不是组合索引前缀),会锁住所有记录也就是锁表。如果语句的执行能够执行一个columnB字段的索引,那么会锁住满足where的行(行锁)。行级锁: 行锁可以最大限度的支持并发处理,当然...原创 2018-07-03 09:46:29 · 778 阅读 · 0 评论 -
mysql 死锁_解决办法和避免出现死锁
如何处理死锁: 死锁已经发生了,怎么解决: 锁等待超时自动回滚事务: 直观方法是在两个事务相互等待时,当一个等待时间超过设置的某一阀值时,对其中一个事务进行回滚,另一个事务就能继续执行。这种方法简单有效,在innodb中,参数innodb_lock_wait_timeout用来设置超时时间。 算法主动进行死锁检测: innodb还提供了wait-for gra...原创 2018-07-03 10:24:57 · 4953 阅读 · 1 评论 -
mysql 慢查询优化的30条经验
1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如:select id from t where num is null可以在num上设置默认值0,确保表中num列没有null值,然后这样查询:select id from t wh...转载 2018-07-06 21:55:22 · 560 阅读 · 0 评论 -
mysql_一致性读和快照度
http://www.zsythink.net/archives/14361:一致性读和快照度是一个意思2:数据的一致性:是指关联数据之间逻辑关系的正确性和完整性3:数据库的一致性:是指数据库从一个一致性状态变到另一个一致性状态4:保证数据的一致性有两种办法: 加锁:对所有表加锁 快照读:备份开始前对所有表进行快照...转载 2018-07-07 10:07:12 · 914 阅读 · 0 评论 -
mysql索引
索引的原理:通过不断的缩小想要获得数据的范围来筛选出最终想要的结果,同时把随机的事件变成顺序的事件,也就是我们总是通过同一种查找方式来锁定数据。原创 2017-12-03 15:49:49 · 266 阅读 · 0 评论 -
mysql_insert 动态值设置表达式
mysql_insert 动态值设置表达式原创 2017-12-11 17:16:47 · 1697 阅读 · 0 评论 -
mysql 快速建表/插入原表数据
mysql_快速建表原创 2017-12-11 17:15:42 · 1134 阅读 · 0 评论 -
mysql 查询缓存
将查询语句及其结果进行缓存,如果查询语句完全相同直接返回查询缓存中的结果原创 2017-11-29 11:20:35 · 147 阅读 · 0 评论 -
mysql数据类型解析
Mysql支持所有标准SQL中的数值类型原创 2017-12-08 11:36:38 · 166 阅读 · 0 评论 -
mysql系统调优
sysbench:一个模块化,跨平台以及多线程的性能测试工具. iibench-mysql:基于 Java 的 MySQL/Percona/MariaDB 索引进行插入性能测试工具;tpcc-mysql:Percona开发的TPC-C测试工具原创 2017-12-08 14:39:27 · 192 阅读 · 0 评论 -
mysql大表优化方案
除非单表数据未来会一直不断上涨,否则不要一开始就考虑拆分,拆分会带来逻辑、部署、运维的各种复杂度,一般以整型值为主的表在千万级以下,字符串为主的表在五百万以下是没有太大问题的。事实上很多时候MySQL单表的性能依然有不少优化空间,甚至能正常支撑千万级以上的数据量转载 2017-12-08 14:44:26 · 309 阅读 · 0 评论 -
mysql日志汇总
二进制日志又称为binlog,记录了所有对数据库的修改操作.因此,select,show这样只查询的语句不会记录进binlog日志原创 2017-11-30 08:50:47 · 148 阅读 · 0 评论 -
mysql主从复制
概念:1:原理主库:一个log dump线程从库:一个IO线程,一个sql线程关键点:relay log(中继日志) 2:开启主从复制的必备条件主库开启bin-log日志;主库和从库的serverId不同;从库能连通主库 引用:https://www.cnblogs.com/Aiapple/转载 2017-12-03 11:46:30 · 196 阅读 · 0 评论 -
mysql_删除重复行
mysql_删除重复行原创 2017-12-11 17:07:55 · 305 阅读 · 0 评论 -
mysql_on duplicate key update
mysql_on duplicate key update原创 2017-12-11 17:10:59 · 130 阅读 · 0 评论 -
mysql_insert ignore into
mysql_insert ignore into原创 2017-12-11 17:12:10 · 697 阅读 · 0 评论 -
mysql_replace into
mysql_replace into原创 2017-12-11 17:13:48 · 175 阅读 · 0 评论 -
mysql int(19) float(7,2) decimal(7,2)对比
int(19):指定数字的显示宽度为19,与实际存储数值的范围无关float(7,2): 7是显示宽度指示器,指定显示的浮点数为7位数字(与float实际存储值的范围无关),2代表小数点后只有两位小数(第三位会四舍五入后插入数据库) decimal(7,2): 7表示数值的精度,即实际保存到数据库的有效数字的总个数; 2代表小数点后的位数(同上)...原创 2018-07-07 18:21:15 · 4621 阅读 · 0 评论