![](https://img-blog.csdnimg.cn/20190927151053287.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
数据库
数据库相关的 mysql 等
快乐的码农一枚
这个作者很懒,什么都没留下…
展开
-
编码导致的慢SQL
MySQL混用utf8和utf8mb4连表查询慢的问题分享原创 2023-02-16 19:52:41 · 2296 阅读 · 0 评论 -
死锁日志解析
死锁日志原创 2023-02-02 21:29:43 · 147 阅读 · 0 评论 -
Hbase启动
如果出现异常如下:Could not start ZK at requested port of 2181. ZK was started at port: 2182. Aborting as clients (e.g. shell) will not be able to find this ZK quorum.则需要修改hbase-site.xml<property> <name>hbase.cluster.distributed&...原创 2020-06-22 13:54:07 · 129 阅读 · 0 评论 -
Hbase学习笔记
创建表语句create 'Student','StuInfo','Grades' Student表名 StuInfo、Grades 字段名注意在 HBase Shell 语法中,所有字符串参数都必须包含在单引号中,且区分大小写,如 Student 和 student 代表两个不同的表另外,在上条命令中没有对列族参数进行定义,因此使用的都是默认参数,如果建表时要设置列族的参数,参考以下方式:create 'Student', {NAME => 'Stulnfo',...原创 2020-05-11 10:05:41 · 276 阅读 · 0 评论 -
数据库只读事务
那为什么要设置为只读事务、而不是常规的事务呢?主要是从执行效率角度的考虑。因为这个里的操作都是一些只读操作,所以设置为只读事务,数据库会为只读事务提供一些优化手段,比如不启动回滚段、不记录回滚log之类的。为了避免此情况的发生,可以给复合查询操作添加上只读事务,这样事务控制范围内,事务外的写操作就不可见,这样就保证了事务内多条查询语句执行结果的一致性。原创 2022-11-21 21:27:14 · 308 阅读 · 0 评论 -
mysql数据库响应慢得对应策略
iostat -x 查询io情况关于 CPU 的指标,我们重点看 %iowait 和 %idle 两个指标。 %iowait:CPU 等待输入输出完成时间的百分比; %idle:CPU 空闲时间百分比。 若%iowait 的值过高,则表示硬盘存在 I/O 瓶颈;若 %idle 值高,表示 CPU 较空闲。如果 %idle 值高但系统响应慢时,有可能是 CPU 等待分配内存,此时应加大内存容量。%idle 值如果持续低于 10,那么系统的 CPU ..原创 2022-05-11 18:11:00 · 591 阅读 · 0 评论 -
读写分离处理过期读问题
一、强制走主库方案二、Sleep 方案三、判断主备无延迟方案 show slave status原创 2022-05-03 21:30:57 · 146 阅读 · 0 评论 -
使用索引失效的场景
1、使用索引失效的场景改写的sql根据复合索引得到的数据量是全表数据量的1/10,达到了mysql使用索引进行二次查找的量级查询的数据量太大导致走索引不划算,引擎只能走了全表扫描原创 2021-09-24 15:21:52 · 68 阅读 · 0 评论 -
重复读的隔离级别下 幻读问题
RC隔离级别下,都是当前读; RR隔离级别下,会有快照读和当前读(快照读就是普通的读取操作,当前读select * from update、select *lock in share mode 和更新新增操作)对于快照读来说,幻读的解决是依赖mvcc解决。而对于当前读则依赖于gap-lock解决...原创 2020-07-04 15:24:25 · 187 阅读 · 0 评论 -
分页查询优化
一般的分页查询SELECT*FROMtableLIMIT[offset,]rows|rowsOFFSEToffset如果深分页查询语句为:select*fromorders_historywheretype=8limit1000000,100;select*fromorders_historywheretype=8and id>=(selectidfromorders_historywheretype=8limit100000,1)...原创 2020-07-04 11:40:08 · 172 阅读 · 0 评论 -
InnoDB 和 MyISAM 的区别
InnoDB支持事务,而MyISAM不支持 InnoDB支持表锁、行锁,而MyISAM只支持表锁 InnoDB 支持外键,而MyISAM不支持 InnoDB 使用聚集索引和非聚集索引 MyISAM 只有聚集索引 InnoDB 支持hash索引 ; MyISAM不支持 记录存储顺序,InnoDB 是按主键顺序 MyISAM是按插入顺序...原创 2020-06-24 14:18:29 · 197 阅读 · 0 评论 -
InnoDB 幻读的问题
快照读天然的解决了幻读的问题,因为同一事务内查询多次的ReadView是一样的 当前读命令包含:update、insert、delete、还有select ... for update、select... lock in share mode都是当前读 当前读需要借助间隙锁来解决幻读的问题、RR级别下靠的是Gap锁解决幻读 RC级别下Gap是关闭...原创 2020-06-24 14:04:15 · 122 阅读 · 0 评论 -
InnoDB 事务可见性
InnoDB在每行记录的后面会隐性的增加两列:创建版本号和删除版本号数据库每开启一个事务,就会生成一个系统版本号 用来和数据库行记录的版本号进行对比insert 在行记录创建版本号标识上创建时候的系统版本delete 在行记录删除版本号标识上当前系统版本update delete和insert的合集以上貌似是错误的;如果事务A申请版本号是30, 事务B申请版本号是31 因为有可能后申请事务B先提交了,但是还是不能被事务A所看到;实际上行记录后面增加了三个隐藏字...原创 2020-06-24 11:40:47 · 943 阅读 · 0 评论 -
mysql数据库 隔离级别
Undo + Redo事务的简化过程假设有A、B两个数据,值分别为1,2,开始一个事务,事务的操作内容为:把1修改为3,2修改为4,那么实际的记录如下(简化):.事务开始. .记录A=1到undo log. .修改A=3. .记录A=3到redo log. .记录B=2到undo log. .修改B=4. .记录B=4到redo log. .将redo log...原创 2020-04-30 17:26:37 · 96 阅读 · 0 评论 -
查看binlog文件
show binary logs;No connection. Trying to reconnect...Connection id: 24563949Current database: *** NONE ***+-------------------+------------+| Log_name | File_size |+----------...原创 2020-04-21 11:10:56 · 245 阅读 · 0 评论 -
InnoDB 引擎在执行这个 update 语句时的内部流程。
1.执行器先找引擎取 目标行。目标行所在的数据页本来就在内存中,就直接返回给执行器;否则,需要先从磁盘读入内存,然后再返回。2.执行器拿到引擎给的行数据,把这个值加上 1,比如原来是 N,现在就是 N+1,得到新的一行数据,再调用引擎接口写入这行新数据。3.引擎将这行新数据更新到内存(InnoDB Buffer Pool)中,同时将这个更新操作记录到 redo log 里面,此时 redo...原创 2020-04-13 11:45:49 · 285 阅读 · 0 评论 -
可重复读 读提交
READ COMMITTED一个事务的修改在他提交之前的所有修改,对其他事务都是不可见的。其他事务能读到已提交的修改变化。在很多场景下这种逻辑是可以接受的。InnoDB在 READ COMMITTED,使用排它锁,读取数据不加锁而是使用了MVCC机制。或者换句话说他采用了读写分离机制。但是该级别会产生不可重读以及幻读问题。什么是不可重读?在一个事务内多次读取的结果不一样。为...转载 2020-04-08 14:23:13 · 428 阅读 · 0 评论 -
connectTimeout socketTimeout
connectTimeout 配置连接超时时间 当设置 connectTimeout=1时,在建立数据库连接时即发生了错误。该值在建立数据库连接时有效。 socketTimeout 配置socket的超时时间 构造一个慢查,并设置socketTimeout小于慢查的时间,如:socketTimeout=1000&connectTimeout=1000,慢查执行时间10...原创 2020-03-24 15:42:45 · 1058 阅读 · 0 评论 -
分库分表的依据
分库,前台是并发量大 水平分表 表的数据量比较大,并发量并没有上来 垂直分表 数据量并不大,但是一行的记录字段太多,冷热字段在一行。建议拆字段...原创 2020-03-23 11:40:17 · 867 阅读 · 0 评论 -
mysql的服务器cpu高
mysql 的cpu一般消耗在哪些方面 1) 用户操作 2)IO操作等待用户操作一般包含:逻辑运算、类型转换、排序等IO等待由于:查询的记录条数比较多;适当的缓存、减少排序、字段查询的尽量少、使用合适的索引等...原创 2020-03-11 11:24:02 · 182 阅读 · 0 评论 -
Redo Undo 日志
Redo用来保证事务的原子性和持久性,Undo能保证事务的一致性原创 2020-01-20 20:00:56 · 144 阅读 · 0 评论 -
MySQL 优化
表字段进行优化 尽量使用TINYINT、SMALLINT、MEDIUM_INT作为整数类型而非INT,如果非负则加上UNSIGNEDVARCHAR的长度只分配真正需要的空间使用枚举或整数代替字符串类型尽量使用时间戳而非DATETIME单表不要有太多字段,建议在20以内避免使用NULL字段,占用额外索引空间用整型来存IP 索引优化 尽量使用联合索引,减少索引...原创 2020-01-20 10:52:12 · 101 阅读 · 0 评论 -
mysql sql的性能优化
前置条件:select version(); -- 》 5.7.17desc test;+--------+---------------------+------+-----+---------+----------------+| Field | Type | Null | Key | Default | Extra |+--------+------------------...原创 2020-01-17 11:36:55 · 93 阅读 · 0 评论 -
show profile
打开show profile开关set profiling = 1;查看值show variables like "%pro%";mysql> show profile;+--------------------------------+----------+| Status | Duration |+-------...原创 2020-01-14 19:10:13 · 89 阅读 · 0 评论 -
mysql性能优化
1、但当 LIMIT 子句变成 “LIMIT 1000000,10” 时,程序员仍然会抱怨:我只取10条记录为什么还是慢?在前端数据浏览翻页,或者大数据分批导出等场景下,是可以将上一页的最大值当成参数作为查询条件的2、隐式转换varchar(20),MySQL 的策略是将字符串转换为数字之后再比较。函数作用于表字段,索引失效。需要使用函数cast(sexasUNSIGNE...转载 2019-12-16 11:31:48 · 247 阅读 · 0 评论 -
数据库优化的注意点和建议
1、分库分表 纵向分库分表 横向分库分表2、减少join 适当使用冗余存储字段3、使用索引4、减少使用范围查询、减少子查询(使用join关联查询)、减少not使用5、查看是否存在隐藏的字段转型6、索引的可以创建联合索引、顺序索引的字段顺序,默认要分辨度越高越排在前面7、不要烂用索引,创建无谓的索引8、必须创建一个主键,主键的逻辑顺...原创 2019-12-17 10:22:51 · 117 阅读 · 0 评论 -
mysql 幻读
隔离级别是Read Committed下,会出现幻读情况,但是在该组合Repeatable Read级别下,不会出现幻读情况代表RR隔离级别下使用了Gap锁间隙锁并不是锁记录本身,而是锁记录之间的间隙。这样就可以保证间隙之间不会新增记录,也就不会产生幻读的情况...原创 2019-12-17 11:29:49 · 77 阅读 · 0 评论