mysql
Qgwperfect
这个作者很懒,什么都没留下…
展开
-
mysql杂项
Int类型时间日期类型char是定长,varchar是变长text和blob可以建立前缀索引text not null字段,不能设置默认值原创 2020-09-06 14:53:58 · 118 阅读 · 0 评论 -
DROP TABLE、TRUNCATE TABLE和DELETE的区别
相同点TRUNCATETABLE和DELETE都可以删除整个数据库表的记录不同点 DELETE DML语言 可以回退 可以有条件的删除DELETE FROM 表名 WHERE 条件 TRUNCATE TABLE DDL语言 无法回退 默认所有的表内容都删除 删除速度比delete快TRUNCATE TABLE 表名 DROP TABLE 用于删除表(表的结构、属性以及索引也会被删除);DROP TABLE 表名 原理DDL(Data Definit.转载 2020-09-06 14:01:47 · 198 阅读 · 0 评论 -
mysql索引设计的原则
1,索引不易过多,3,4个为好2,针对SQL语句里的where条件,order by条件,group by条件去设计索引,如果是联合索引要匹配最左侧开始的部分字段3,建立索引,尽量选用基数比较大的字段,就是值比较多的字段,这样才能发挥出B+数二分查找的优势4,尽量针对字段类型比较小的列来设计索引,如果针对大字段的前部分字符建立索引,where查询可以用,但是order by和group by就用不上了5,不要让索引的字段做函数计算6,建议逐渐一定是自增的,别用UUID之类的,因为主键自增原创 2020-08-20 09:24:14 · 128 阅读 · 0 评论 -
MySQL学习笔记:count(1)、count(*)、count(字段)的区别
关于数据库中行数统计,无论是MySQL还是Oracle,都有一个函数可以使用,那就是COUNT。但是,就是这个常用的COUNT函数,却暗藏着很多玄机,尤其是在面试的时候,一不小心就会被虐。不信的话请尝试回答下以下问题:> 1、COUNT有几种用法?> 2、COUNT(字段名)和COUNT(*)的查询结果有什么不同?> 3、COUNT(1)和COUNT(*)之间有什么不同?> 4、COUNT(1)和COUNT(*)之间的效率哪个更高?> 5、为什么《阿里巴巴Ja转载 2020-08-01 16:39:36 · 378 阅读 · 0 评论 -
如何避免死锁
阻止死锁的途径就是避免满足死锁条件的情况发生,为此我们在开发的过程中需要遵循如下原则:1.尽量避免并发的执行涉及到修改数据的语句。2.要求每一个事务一次就将所有要使用到的数据全部加锁,否则就不允许执行。3.预先规定一个加锁顺序,所有的事务都必须按照这个顺序对数据执行封锁。如不同的过程在事务内部对对象的更新执行顺序应尽量保证一致。4.每个事务的执行时间不可太长,对程序段的事务可考虑将其分割为几个事务。在事务中不要求输入,应该在事务之前得到输入,然后快速执行事务。5.使用尽可能低的隔离级别。转载 2020-07-30 23:01:20 · 321 阅读 · 0 评论 -
mysql page大小
mysql> show global variables like '%page%';+--------------------------------------+-----------+| Variable_name | Value |+--------------------------------------+-----------+| innodb_log_compressed_pages | ON .转载 2020-07-23 12:08:32 · 562 阅读 · 0 评论 -
decimal类型精度高的原因
简单记录,原理后续再研究:mysql官方唯一指定精确存储的类型继续扩大存储空间,比double更大一个级别,比如128位甚至更多 通过字符串化或者其他的方式特殊存储起来...原创 2020-03-28 16:06:27 · 657 阅读 · 1 评论 -
MySQL 性能优化神器 Explain 使用分析
简介MySQL 提供了一个 EXPLAIN 命令, 它可以对SELECT语句进行分析, 并输出SELECT执行的详细信息, 以供开发人员针对性优化.EXPLAIN 命令用法十分简单, 在 SELECT 语句前加上 Explain 就可以了, 例如:EXPLAIN SELECT * from user_info WHERE id < 300;准备为了接下来方便演示 ...转载 2019-12-03 16:33:29 · 130 阅读 · 0 评论 -
WIN10安装MySQL出现错误2503 2502 的解决办法!
1. 打开任务管理器:Ctrl+Alt+Del。2. 点击任务管理器左上角的文件按钮:3. 再点击 运行新任务(n)按钮。4. 手动输入所下载的MySQL安装文件的地址+文件名。比如我放在D:\MySQL文件夹里,文件名为:mysql-installer-web-community-5.7.21.0.msi,就输入:D:\MySQL\mysql-installer-web-co...转载 2019-10-27 22:56:02 · 246 阅读 · 0 评论 -
mysql like索引
简单纪录一下:http% 会走索引%http 不会走索引原创 2019-10-08 08:29:29 · 142 阅读 · 0 评论 -
hash索引的缺点
1,hash函数计算后的结果是随机的,再磁盘上是随机放置数据以主键ID为例,随着ID的增长,ID对应的行数据,在磁盘上随机放置2,无法对范围查询进行相应的优化3,无法利用前缀索引4,排序也无法进行优化5,必须回表,通过索引拿到数据的位置,必须回到表中取数据...原创 2019-10-07 20:11:40 · 639 阅读 · 0 评论 -
mysql binlog日志的三种模式
1、statement level模式每一条会修改数据的sql都会记录到master的bin-log中。slave在复制的时候sql进程会解析成和原来master端执行过的相同的sql来再次执行。优点:statement level下的优点,首先就是解决了row level下的缺点,不需要记录每一行数据的变化,减少bin-log日志量,节约io,提高性能。因为他只需要记录在master上所执...转载 2019-08-28 12:40:43 · 144 阅读 · 0 评论 -
mysql学习笔记---慢日志
1,查看mysql慢日志相关的配置:show VARIABLES like '%query%';相关配置解释long_query_time 执行时间超过多长时间会记录到慢日志文件中 slow_query_log 慢日志是否打开 slow_query_log_file 慢日志文件存放的位置2,slow_queries表示慢日志执行的次数 sho...原创 2019-04-08 22:40:45 · 99 阅读 · 0 评论 -
mysql如何确认复合索引有使用到哪些索引字段的测试
一、基本信息MariaDB [lots]> select @@version;+---------------------+| @@version|+---------------------+| 10.0.20-MariaDB-log |+---------------------+1 row in set (0.00 sec)mysql> s...转载 2019-04-09 21:12:14 · 358 阅读 · 0 评论 -
【mysql学习笔记】MyISAM和InnoDB关于锁方面的区别是什么
1,MyISAM默认用的是表级锁,不支持行级锁2,InnoDB默认用的是行级锁,也支持表级锁原创 2019-04-23 14:43:05 · 219 阅读 · 0 评论 -
【mysql学习笔记】MyISAM锁简单记录
lock tables 表 read 手动加读锁(共享锁)lock tables 表 write 手动加写锁(排它锁)unlock tables 释放锁说明:读读兼容读写不兼容写读不兼容写写不兼容查询加排它锁的方式select * from 表 for up...原创 2019-04-23 14:43:37 · 116 阅读 · 0 评论 -
【mysql锁】一分钟理清mysql的锁类型
我们常用的存储引擎就MyISAM和InnoDB。MyISAM存储主要就简单的表级别锁,下面只说InnoDB的各种锁类型。InnoDB不仅支持行级别的锁,也支持表级别的锁。平常我们会听到各种锁,你是不是不仅迷茫它们怎么用的,还会迷茫它们 各自之间都是什么关系?什么是乐观锁和悲观锁?乐观锁和悲观锁是泛指,不是具体的锁。乐观锁:也叫乐观并发控制,它总是乐观的认为用户在并发事务处理时不会影响...转载 2019-04-18 16:21:58 · 118 阅读 · 0 评论 -
【mysql学习笔记】MyISAM和InnoDB各自适合的场景
MyISAM适合的场景频繁执行权标count的语句 查询非常频繁,对数据的增删改的频率不高 没有事务的场景InnoDB适合的场景数据的增删改查都非常的频繁 可靠性要求较高,需要支持事务...原创 2019-04-23 15:42:20 · 738 阅读 · 0 评论 -
【mysql学习笔记】InnoDB的RR级别如何避免幻读
RR级别(REPEATABLE-READ隔离级别)引入【next-key lock】避免幻读next-key lock组成record lock(记录锁) gap lock(间隙锁)gap lock应用场景非唯一索引当前读 不走索引的当前读 仅命中部分结果的结果集当前读 主键索引或者唯一索引如果where条件全部命中,则不会用gap lock锁,只会加record lock(...原创 2019-04-24 10:17:17 · 1222 阅读 · 0 评论 -
MySQL 分库分表及其平滑扩容方案
众所周知,数据库很容易成为应用系统的瓶颈。单机数据库的资源和处理能力有限,在高并发的分布式系统中,可采用分库分表突破单机局限。本文总结了分库分表的相关概念、全局ID的生成策略、分片策略、平滑扩容方案、以及流行的方案。1 分库分表概述在业务量不大时,单库单表即可支撑。当数据量过大存储不下、或者并发量过大负荷不起时,就要考虑分库分表。1.1 分库分表相关术语读写分离: 不同的数据...转载 2019-08-07 18:00:14 · 170 阅读 · 0 评论 -
深入浅出mysql索引
索引相关1,索引的出现是为了提高数据查询的效率,就像书的目录一样2,索引不但写在内存中,还会写在硬盘中3,索引是存储引擎层实现的4,索引的常见类型哈希表:以键-值(key-value)存储数据的结构 有序数组:按顺序存储。查询用二分法就可以快速查询,时间复杂度是:O(log(N) 搜索树:每个节点的左儿子小于父节点,父节点又小于右儿子。查询时间复杂度O(log(N)),更新...原创 2019-08-28 00:02:03 · 130 阅读 · 0 评论 -
MySQL B+ 树的索引-联合索引
联合索引联合索引是指对表上的多个列进行索引。联合索引的创建方法与单个索引创建的方法一样,不同之处是有多个索引列。如下图: 创建一个two_key 表,并且id_fid是联合索引,联合的列是(id, fid)那么联合索引的内部是什么样的呢?从本质上来说,联合索引也是一颗B+树,不同的是联合索引的键值的数量和不是1,而是大于等于2。接着来讨论两个整数型列组成的联合索引,假设两个键...转载 2019-03-26 22:34:00 · 1302 阅读 · 0 评论