Mysql整理
Mysql45讲资源整理
504_Ju
这个作者很懒,什么都没留下…
展开
-
mysql 索引及其优化
索引相关理解:1、索引是为了提高查询效率而出现的,像书的目录一样,是在存储引擎层实现的2、索引的常见模型:哈希表,有序数组,搜索树。2.1 哈希表适用于等值查询,因为不是有序的所以新增一个数时会比较快,查询一个范围时就必须全部扫描一遍2.2 有序数组和哈希表不同,查询一个具体的值/范围比较方便 二分法可快速查找,插入一个数值时就比较慢,需要移动数据,适用于静态存储引擎2.3 搜索树 有二叉搜索树和多叉搜索树,由于其特点查找和更新的时间复杂度都是O(log(N)), 对于数据量大的节点可采用N叉树,原创 2020-12-16 17:37:02 · 170 阅读 · 0 评论 -
使用binlog增量恢复数据
一、首先介绍几个命令:– show binary logs 列出所有的binlog文件– show master status 当前二进制文件的名称,及当前写的位置二、恢复数据的两种方式:Point-in-Time Recovery Using Event Times(使用事件时间恢复)Point-in-Time Recovery Using Event Positions`(使用位置恢复)三、mysqlbinlogmysqlbinlog可以将二进制的binlog文件转换为文本,以便于可以执原创 2020-12-10 21:20:06 · 346 阅读 · 0 评论 -
mysql server has gone away
根据官方文档解释的总结下(version 5.6):mysql server has gone away和Lost connection to server during query这俩一样吗?(是一样的,不过就是操作系统不同提示的信息不同)“mysql server has gone away”最常见的原因是服务器超时并关闭了连接;通常还是会获得以下错误码之一,具体是什么取决于操作系统–默认,一个连接在8小时之内什么都没做,连接就会被server关闭,当然可以修改wait_timeout变量把时间原创 2020-12-08 11:05:19 · 173 阅读 · 0 评论 -
为何存在Metadata Lock
为何会存在Metadata Lock?-- 源自于一个mysql的一个bug,mysql这样描述:http://bugs.mysql.com/bug.php?id=989大致意思就是:在还没有Metadata Lock时在主库中session A在做一个DML操作如 insert 而没有提交,同时有另一个session B对同一个对象进行了DDL操作,如drop table;这就会导致从库执行有误。因为mysql的binlog是根据事务提交的先后顺序来记录的,前面的操作会导致在写binlog时先记录原创 2020-06-29 00:18:52 · 310 阅读 · 0 评论 -
如何判断一个数据库是否出了问题
怎么判断一个主库出了问题select 1-- 用select 1 只能说明数据库的进程正常,并不能证明主库是没有问题的;如(innodb_thread_concurrency=3)设置并发线程为3,表示InnoDB只允许三个线程并行执行,可以此种方式来模仿大查询。启动三个session每一个都执行select sleep(100) from t,再执行select 1时发现可以正常返回;但是执行查询表的语句会block,所以select 1是无法检测出实例是否正常的。-- InnoDB中inn.原创 2020-05-19 00:01:58 · 789 阅读 · 0 评论 -
Mysql如何保证数据不会丢失
简单来说就是依靠redo log和binlog保证持久化到磁盘后就可以保证,异常重启数据可以正常恢复;这里主要说下这两个log的写入机制。binlog的写入机制: 一个事务执行的过程中,会先把日志写入到binlog cache中,事务提交的时候再把binlog cache中的日志写到binlog中。系统给binlog cache分配了一片内存,每个线程一个,其大小由参数(binlog...原创 2020-04-15 00:45:58 · 633 阅读 · 0 评论 -
事务的隔离状况
事务的隔离级别 可重复读:查询只承认在事务启动之前已经提交的数据 读提交:查询只承认在语句启动前已经提交的数据 当前读:总是读取已经提交完成的最新版本在Mysql中有两个视图的概念: 1、一个是view,一个用查询语句定义的虚拟表,在调用的时候执行查询语句并返回结果 2、另外是InnoDB为了实现MVCC时用到的一致性视图,用于支持RC-读提交...原创 2020-04-12 18:48:48 · 107 阅读 · 0 评论 -
自增id用完怎么处理
Mysql中有很多个自增id,每个自增id都是有初始值的,虽然自然数是没有上限的,不过要定义了它的字节长度那就是有上限的,如无符号整形(unsigned int)是4个字节,其上限就是2^32 - 1。表定义的自增id: 自增id应该先想到的就是表定义的自增id;表定义的自增id达到上限后的逻辑是:再申请下一个id时保持不变,可以通过下面方式验证: /* CREA...原创 2020-04-11 17:03:39 · 365 阅读 · 0 评论