
数据库
文章平均质量分 81
太阳伞下的阿呆
愿天下的每个阿呆都能拥有一个可以依靠的太阳伞
展开
-
MySQL 事件调度器
确实是一个更方便且内置的解决方案,可以在 MySQL 服务器端自动定期执行表优化操作,无需依赖外部工具或应用程序代码。这种方式也能减少数据库维护的复杂性,尤其适用于在数据库频繁更新或删除时进行自动化优化。原创 2025-01-24 21:03:40 · 599 阅读 · 0 评论 -
Mysql主从不一致校验
依赖主从复制依赖于MySQL的复制机制,因此只能检测到复制层面的问题,而无法发现复制日志丢失或数据直接修改导致的不一致。数据一致性保证:工具可以通过设置等选项,确保只检测而不修改数据,也可以与结合使用来修复不一致的数据。通过这种方式,可以在不直接访问从库数据的情况下,有效地检测并报告主从数据不一致问题,为数据库管理员提供了强大的维护工具。原创 2024-09-27 21:12:38 · 920 阅读 · 0 评论 -
Mysql大单表JSON优化
类型优点缺点TEXT兼容性高;无额外的 JSON 数据类型开销没有 JSON 数据类型的内置功能;查询性能较差JSON内置函数和操作符;数据验证;可以创建索引存储 JSON 数据时有额外开销;兼容性问题对于大 JSON 数据,推荐使用 JSON 类型,以利用 MySQL 的内置功能和优化。对于简单的文本存储,TEXT 类型也可以满足需求,但可能需要额外的处理步骤来管理 JSON 数据。原创 2024-08-04 06:21:22 · 1404 阅读 · 0 评论 -
mysql undolog管理
在MySQL中,Undo Log(撤销日志)用于支持事务的回滚和MVCC(多版本并发控制)。为了避免Undo Log不断增长,影响系统性能,需要进行合理的清理。MySQL的Undo Log清理策略主要依赖于系统的配置参数和后台线程的操作。原创 2024-06-07 22:11:51 · 1664 阅读 · 0 评论 -
Mysql锁实战
基于唯一索引更新,行锁基于非唯一索引更新,next-key-lock,行锁+gap锁,锁范围前后均为闭区间,以user_age索引字段为例:between 18 and 40, 锁范围:[18,40]19,锁范围:[19,+∞]原创 2023-08-13 15:14:47 · 410 阅读 · 0 评论 -
mysql索引字段设计
基于索引选择性创建联合索引,字段设计可以根据实际业务场景来评估例如:字段1(基数=10W),字段2(基数=10W),字段3(基数=20)虽然字段1,2独立的选择性更高,但是如果字段1与字段2基本1:1,而字段1与字段3基本1:5。那么字段1+字段3无疑是更佳的选择。原创 2023-01-15 22:10:13 · 859 阅读 · 0 评论 -
mongodb脚本
【代码】mongodb脚本。原创 2022-08-20 09:15:06 · 927 阅读 · 0 评论 -
mysql锁与当前读快照读
当前读快照读mysql事务隔离级别为:read committed,此时默认的查询为“当前读”,即可以读取最新提交的数据mysql事务隔离级别为:repeatable read(简称RR),此时默认的查询为“快照读”,即近读取事物开启时那个时刻的数据快照那么RR隔离级别的读是否可以变更为当前读呢?当然时可以的,那么如何实现呢?select for update案例数据mysql> select * from user;+----+-----------+-----------+| id原创 2021-08-07 15:00:57 · 684 阅读 · 0 评论 -
分库分表设计
为什么要分库分表?单库表无论是存储还是cpu/网络等物理资源存在极限,对于日益增长的业务无法支撑分库分表设计默认按照主键作为分库分表的keyhash散列分库分表优劣优点:hash散列分布均匀,负载较为均衡缺点:扩容难扩容问题扩容需要数据rehash+数据迁移,当然可以选择业务低峰时逐个迁移做到业务无感,但是迁移的成本与数据量成正比可以学习参考HashMap的方案,扩容时避免rehash并且减少了迁移量,但是实用吗?为了成本当然时一台台扩容更为理想,不能每次扩容都成倍增长,该方案不适用原创 2021-07-18 16:03:25 · 344 阅读 · 0 评论 -
为什么mysql默认事务隔离级别为RR
mysql版本:8.x,复现问题版本:5.0原因其实是历史原因,mysql历史版本binlog仅支持statement模式,此模式下如果使用RC隔离级别会出现主从不一致。新版本修复后也就一直沿用了该默认设置。新版本已修复,当出现RC+statement组合时会抛出异常ERROR 1665 (HY000): Cannot execute statement: impossible to write to binary log since BINLOG_FORMAT = STATEMENT and at原创 2021-06-20 19:41:51 · 629 阅读 · 2 评论 -
mysql优化
mysql 5.6MRR(Multi-Range Read Optimization)MRR优化前范围查询逻辑如下,会产生大量的随机访问,查询性能存在优化空间MRR优化启用后会对普通索引中的二级路由进行一个排序,将大量随机访问转换为顺序访问,流程如下对于MyISAM存储引擎,在去磁盘获取完整数据之前,会先按照rowid排好序,再去顺序的读取磁盘。对于Innodb存储引擎,则会按照聚簇索引键值排好序,再顺序的读取聚簇索引。ICP(Index Condition Pushdown Optim原创 2021-06-06 16:22:13 · 119 阅读 · 3 评论 -
mysql事务与redo log undo log doublewrite buffer
redo logredo log是基于磁盘数据结构记录的日志,用于在db崩溃时恢复由未完成的事务写入的正确数据。在正常操作期间,redo log会对SQL语句或低级API调用产生的更改表数据的请求进行编码。在意外关闭之前没有完成数据文件更新的修改将在初始化期间和连接被接受之前自动重放。关于redo log在崩溃恢复中的作用,请参见“InnoDB恢复”章节14.19.2 Section 14.19.2, “InnoDB Recovery”默认redo log在磁盘上由两个文件表示 ib_logfile0原创 2021-04-11 19:09:17 · 732 阅读 · 0 评论 -
redis faq
为什么redis不同于其他key-value存储?主要有两个原因。在key-value DB中,redis是一个不同的演化路径,它可以包含更复杂数据类型的值,在这些数据类型上定义原子的操作。Redis数据类型与基本的数据结构密切相关,并暴露给程序员,不需要额外的抽象层。redis是一个内存数据库,但持久化在磁盘,那么它代表了一个不同的权衡,在数据集不能大于内存的限制下,达到高速的读写。内存数据库的另一个优势是,复杂数据结构的内存表示比在磁盘上同样数据结构更容易操作,因此小的内部复杂度下,redis可翻译 2020-08-02 23:21:42 · 232 阅读 · 0 评论 -
mysql常用脚本
持续更新mysql查看配置参数show variables like '%buffer%';mysql查看当前正在使用的表show open tables;mysql查看引擎状态(包含最后一次死锁原因记录)show engine innodb statusmysql查看当前进程show processlist;(进程对应的sql可能显示不全)show full proc......原创 2019-02-20 10:58:57 · 833 阅读 · 1 评论 -
sqlite报错database is locked
问题描述由于超级管理员也看不到我们组织,也没有权限更改用户的角色或邀请新用户,于是想要通过db直接修改数据的方式处理,无奈呀。。。操作流程如下:登录Linux服务器连接sqlite数据库:sqlite3 /data1/grafana/data/grafana.db更新用户权限:update org_user set role=‘Admin’ where id = 483 and user_id in (222,223);更新成功后去页面验证发现没有成功,则直接更新所有用户的角色:update or原创 2020-06-21 10:32:26 · 1847 阅读 · 0 评论