MySQL
文章平均质量分 88
98seven
这个作者很懒,什么都没留下…
展开
-
MySQL二进制日志详解 | binlog存储、解析、日志恢复
将mysqlbinlog的输出作为mysql命令的输入,就能重放binlog中记录的修改,这对于MySQL的即时点数据恢复时很有价值的。定义了单个文件的大小限制,如果二进制日志写入的内容大小超出给定值,日志就会发生滚动(关闭当前文件,重新打开一个新的日志文件)。⑦清空现有的二进制日志文件:该方法可以删除列于索引文件中的所有二进制日志,把二进制日志索引文件重新设置为空,并创建一个以.000001为后缀新的二进制日制文件,并删除过去生成的全部二进制日志。也就是说,这个文件是mysqld进程内部专用的。原创 2024-01-17 15:08:04 · 1569 阅读 · 0 评论 -
MySQL表空间碎片—产生原因、带来的问题以及如何解决
Innodb的最小物理存储分配单位是页(page),而UPDATE也可能导致页分裂,频繁的页分裂,页会变得稀疏,并且被不规则的填充,所以最终数据会有碎片。例如原始数据长度varchar(100),大规模更新数据长度为50,这样的话,有50的空间被空白了,新入库的数据不能完全利用剩余的50,这就会产生碎片。当执行插入操作时,MySQL会尝试使用空白空间,如果插入的数据刚好按照索引排序落在这个区间,可能会复用这个位置,但如果某个空白空间一直没有被大小合适的数据占用,仍然无法将其彻底占用,就形成了碎片;原创 2024-01-17 15:07:11 · 1849 阅读 · 0 评论 -
MySQL锁相关——锁机制、表锁、行锁、死锁、锁优化等
MySQL不同的存储引擎支持不同的锁机制,所有存储引擎都以自己的方式显现了锁机制,服务器层完全不了解存储引擎中的锁实现。默认情况下表锁和行锁都是自动获得的,不需要额外的命令,但某些情况下用户需要明确的进行行锁或进行事务的控制,以便确保整个事务的完整性,这样就需要使用事务控制和锁定语句来完成。默认情况下,写锁比读锁具有更高的优先级:当一个锁释放时,这个锁会优先给写锁队列中等候的获取锁请求,然后再给读锁队列中等候的获取锁请求。对于普通的select语句,InnoDB不会加任何锁。原创 2023-12-26 15:12:41 · 1062 阅读 · 0 评论 -
MySQL事务隔离级别 | 模拟并发事务中的问题
正执行的事务产生的数据变化不能被外部看到,因此别的事务中执行同条SELECT语句数次得到的结果都是相同的(解决了“不可重复读”问题)。该隔离级别的事务可以读到其他事务提交的数据(不存在脏读问题)。事务隔离的最高级别,会强制事务排序,使之不发生冲突,从而解决了脏读、不可重复读和幻读的问题,但因其执行效率低真正使用的场景并不多。该隔离级别的事务可以读到其他事务未提交的数据,而未提交的数据可能发生回滚,从而导致前一个事务读取了不存在的脏数据,称为脏读。③客户端B开启事务进行插入操作,并提交事务。原创 2023-12-26 13:56:42 · 429 阅读 · 0 评论 -
MySQL主从复制与切换
由于SQL Thread也是单线程的,当主库的并发较高时,产生的DML数量超过slave的SQL Thread所能处理的速度,或者当slave中有大型query语句产生了锁等待那么延时就产生了。为了完成主从复制,从库需要通过 I/O 线程获取主库中 dump 线程读取的 binlog 内容并写入到自己的中继日志 relay log 中,从库的 SQL 线程再读取中继日志,重做中继日志中的日志,相当于再执行一遍 SQL,更新自己的数据库,以达到数据的一致性。原创 2023-12-20 17:10:40 · 1394 阅读 · 0 评论 -
MySQL账号与权限
MySQL在初始化的时候会创建四个保留账号(mysql.infoschema@localhost、mysql.session@localhost、 mysql.sys @localhost、root@localhost)。MySQL8.0.14开始允许给账号设置两个密码,分别是主密码和辅助密码,方便应用程序的过度(如当主库有多个副本时,主库的账号密码已修改,而复制到副本还需要一定时间,这时可以用主密码在主库上登录,还可以用旧密码在副本上登录,等待密码被复制到所有副本,再抛弃旧密码)*表示所有数据库所有表。原创 2023-12-01 14:16:51 · 377 阅读 · 0 评论 -
一文看懂 | MySQL目录结构
对于使用独立表空间的表不管怎么删除,表空间的碎片不会太严重的影响性能,而且有处理的机会)系统表空间数据文件大小和数量有innodb_data_file_path决定,如图所示表示系统表空间文件名为ibdata1,初始化大小为12M,定义了autoextend随着数据量的增加而进行扩容,每次扩容申请的空间有innodb_autoextend_increment配置。创建myisam表后,数据库目录下多出三个文件(.sdi、.MYD、.MYI),.sdi存储文件结构,.MYD存储数据,.MYI存储索引。原创 2023-08-28 14:45:46 · 557 阅读 · 0 评论 -
MySQL8.0常见问题:服务器SQL模式
服务器SQL模式定义了MySQL应该支持的SQL语法和它应该执行哪种数据验证检查。使在不同环境中使用MySQL或将MySQL与其他数据库服务器一起使用变得更加容易。DBA可设置全局的SQL模式以匹配站点服务器的操作要求,并且每个应用程序都可以根据自己的要求设置其会话 SQL 模式。要在服务器启动时设置 SQL 模式,请使用命令行上的。选项,或在my.cnfmy.ini文件中使用。若要显示地清楚SQL模式,请在命令行使用。或在my.cnfmy.ini文件中配置。原创 2022-12-29 10:43:55 · 691 阅读 · 1 评论