随笔分类 -  mysql

mysql数据库
摘要:什么是前缀索引? 前缀索引也叫局部索引。 优点:它能有效减小索引文件的大小,让每个索引页可以保存更多索引值,从而提高索引查询的速度。 缺点:不能在order by 和 group by 中触发前缀索引,也不能用于覆盖索引。 前缀索引的使用原则: 降低重复的索引值。 前缀索引的使用 alter tab 阅读全文
posted @ 2021-03-21 19:02 smallzhen 阅读(987) 评论(0) 推荐(0)
摘要:utf8mb4是utf8的超集并完全兼容utf8,能够用4个字节存储更多的字符。 utf8mb4对应的排序字符集常用的有: utf8mb4_unicode_ci utf8mb4_general_ci 从准确性和性能比较两者 准确性: utf8mb4_unicode_ci是基于标准的Unicode来排 阅读全文
posted @ 2021-03-20 23:40 smallzhen 阅读(545) 评论(0) 推荐(0)
摘要:浮点类型包括float和double两种类型,double类型的精度比float类型高。 float类型:单精度,数据可以存储至多8位十进制数并占4个字节。 double类型:双精度,数据可以存储至多18位十进制数并占8位字节。 参考:https://mp.weixin.qq.com/s/V6mQe 阅读全文
posted @ 2021-03-20 23:27 smallzhen 阅读(396) 评论(0) 推荐(0)
摘要:InnoDB的事务日志包括redo log和undo log。 redo log redo log是重做日志,用来保障已提交事务的ACID特性。 redo log 通常是物理日志(磁盘),记录的是数据页的物理修改,而不是某一行或某几行修改。它用来恢复提交后的物理数据页。 redo log的作用: 数 阅读全文
posted @ 2021-03-15 21:48 smallzhen 阅读(116) 评论(0) 推荐(0)
摘要:DDL操作,改变表结构: CREATE、ALTER、DROP 命令 DML操作,用来对数据库里的数据的操作:SELECT、UPDATE、DELETE 阅读全文
posted @ 2021-03-14 22:58 smallzhen 阅读(189) 评论(0) 推荐(0)
摘要:我们都知道慢sql是不好的,那么究竟慢sql会引起什么危害呢?我总结了一下,慢sql可能会造成以下几种危害: 影响用户体验。慢sql的执行时间过长,则会导致用户的等待时间过长,直接影响用户体验。 造成数据库幻读、不可重复读。假设该慢sql是一个更新操作的sql,则会可能出现幻读、不可重复读这种数据库 阅读全文
posted @ 2021-03-14 22:51 smallzhen 阅读(1867) 评论(0) 推荐(0)
摘要:mysql与redis同步可以分为三种方案: 通过外部应用程序控制:当写入mysql时,自动将redis同数据删除,等到查询时在Redis查不到再落到mysql查回数据后再写入redis。 通过mysql自动同步刷新Redis,Mysql触发器+UDF函数实现。适合读多写少,不适合并发写场景。 解析 阅读全文
posted @ 2021-03-06 20:21 smallzhen 阅读(2013) 评论(0) 推荐(0)
摘要:主从复制解决的问题: 1、读写分离可将读负载到多台从库 2、可作为实时备份 3、利用主主复制可实现高可用 主从复制原理: 主库操作数据,并将数据写入Binlog 从库调用I/O线程读取主库的Binlog,并写入自己的RelayLog中,再调用SQL线程从RelayLog中解析数据,从而同步到自己的数 阅读全文
posted @ 2021-03-06 20:19 smallzhen 阅读(61) 评论(0) 推荐(0)
摘要:并发的事务可能存在的问题: 读脏:事务A读到了事务B未提交的数据。 不可重复读:事务A在事务B执行期间修改了数据,导致事务B同一个查询两次结果不一致。 幻读:事务A在事务B执行期间插入了数据,导致事务B先查后插被报重复。 InnoDB的事务隔离级别 读未提交(Read Uncommitted):se 阅读全文
posted @ 2021-03-04 00:09 smallzhen 阅读(104) 评论(0) 推荐(0)
摘要:假设不小心写错了sql的条件,写成了 `name` = "aa" = "bb",总结sql的语义转化如下: update 语句的set条件中update table set `name` = "aa" = "bb";==>:update table set `name` = ("aa" = "bb" 阅读全文
posted @ 2021-02-15 23:06 smallzhen 阅读(304) 评论(0) 推荐(0)
摘要:NULL值是对列的一种特殊约束,NULL与空值'' 是两个不一样的值,NULL表示不确定的值。Mysql中可以操作NULL的操作符为以下四个: ① IS NULL (可使用索引) ② IS NOT NULL (索引失效) ③ <=> 太空船操作符,select NULL <=> NULL 得到结果t 阅读全文
posted @ 2021-02-14 23:56 smallzhen 阅读(142) 评论(0) 推荐(0)
摘要:最近我在设计数据表时需要一个存放时间的字段,在timestamp、int(10)和datetime几种类型中犹豫不决,它们都能满足我的业务需求,因此我不知道它们几个哪个更好。下面我就我整理出来的资料记录一下笔记。 timestamp timestamp类型的取值范围为“1970-01-01 00:0 阅读全文
posted @ 2021-02-13 22:57 smallzhen 阅读(928) 评论(0) 推荐(0)
摘要:mysql的性能的影响程度依次是①硬件配置②mysql配置③数据表设计④索引优化。 总结了一下mysql的性能优化 合理分库分表 mysql单表最大记录数取决于操作系统对文件大小的限制,阿里巴巴的开发手册中提出当单表行数超过500万或单表容量超过2GB时推荐分库分表。 合理配置最大并发数 并发数是指 阅读全文
posted @ 2020-12-04 23:42 smallzhen 阅读(130) 评论(0) 推荐(0)
摘要:原因: 不需要的列会增加数据传输时间和网络开销 select * 会需要解析更多的对象、字段、权限、属性等相关内容,会给数据库造成负担。 增大网络开销。* 有时会误带上如log、IconMD5之类无用的大文本字段,数据传输size会几何增涨。 对于无用的大字段,如varchar、blob、text 阅读全文
posted @ 2020-12-02 23:10 smallzhen 阅读(850) 评论(0) 推荐(0)
摘要:大批量插入数据的优化 对于InnoDB引擎,大量插入数据时,可以采取以下几种优化措施 导入的数据按主键顺序排序保存。因为InnoDB引擎按主键顺序保存,如果能提前将插入的顺序排序能省去很多时间。 导入数据前执行 SET UNIQUE_CHECKS=0,关闭唯一性校验,在导入之后再设置为1。因为校验会 阅读全文
posted @ 2020-11-30 21:06 smallzhen 阅读(488) 评论(0) 推荐(0)
摘要:标准的SQL规定,在对表进行聚合查询时,只能在select 子句中写下面3种内容: 通过group by子句指定的聚合键 聚合函数(AVG、COUNT) 常量 假设存在以下sql select aa,bb,count(cc) as count from table1 group by aa; 此时会 阅读全文
posted @ 2020-11-30 20:54 smallzhen 阅读(273) 评论(0) 推荐(0)
摘要:之前工作的时候,写错了一条sql,判断某varchar类型的字段=2,结果匹配了很多条数据,比如 select tt from table1 where tt = 2; 结果集tt中 有 “2sssss”、“2dddddd”等。当时是很好奇,后面去查阅了资料,才发现这是mysql隐式转换导致的。 那 阅读全文
posted @ 2020-11-29 20:36 smallzhen 阅读(464) 评论(0) 推荐(1)
摘要:Extra 是指包含不适合在explain的其他列中显示,但是却十分重要的额外信息。 Extra 的值有 Using index : 表示SQL语句使用了覆盖索引(在索引列中直接得到结果,不用回表),查询效率最高。eg:explain select id from test; Using where 阅读全文
posted @ 2020-04-26 23:07 smallzhen 阅读(1238) 评论(0) 推荐(0)
摘要:explain命令可以模拟优化器执行sql查询语句,从而知道mysql是如何处理你的sql语句的,并用于分析你的查询语句或是表结构的性能瓶颈。 使用方式为:explain+sql语句 通过explain可以得到 表的读取顺序 数据读取操作的操作类型 可用索引 实际使用索引 表间引用 每张表被优化器查 阅读全文
posted @ 2020-04-23 23:17 smallzhen 阅读(155) 评论(0) 推荐(0)
摘要:今日面试官问我,假设存在(a,b,c)三个字段的联合索引,问我 1、如果where a=x and b=x,是否会用到索引? 2、如果 where a=x and b=x order by c desc 会不会用到索引? 3、如果 where a=x and b=x group by c 会不会用到 阅读全文
posted @ 2020-04-15 00:08 smallzhen 阅读(1295) 评论(0) 推荐(0)