上一页 1 ··· 9 10 11 12 13 14 15 16 17 ··· 30 下一页
摘要: 你看到了,session A 先用 start transaction with consistent snapshot 命令启动了一个事务,之后 session B 才开始执行 update 语句。session B 执行完 100 万次 update 语句后,id=1 这一行处于什么状态呢?你可 阅读全文
posted @ 2020-02-05 10:34 lakeslove 阅读(108) 评论(0) 推荐(0) 编辑
摘要: 对索引字段做函数操作,可能会破坏索引值的有序性,因此优化器就决定放弃走树搜索功能。 mysql> select count(*) from tradelog where month(t_modified)=7; 这条语句需要走全索引扫描 select * from tradelog where id 阅读全文
posted @ 2020-02-03 19:21 lakeslove 阅读(138) 评论(0) 推荐(0) 编辑
摘要: select word from words order by rand() limit 3; 这条语句会扫描2count(*)+3行,执行如下:这里用到了内存临时表 set tmp_table_size=1024; set sort_buffer_size=32768; set max_lengt 阅读全文
posted @ 2020-02-03 17:03 lakeslove 阅读(146) 评论(0) 推荐(0) 编辑
摘要: MySQL 会给每个线程分配一块内存用于排序,称为 sort_buffer。 select city,name,age from t where city='杭州' order by name limit 1000 ; 通常情况下,这个语句执行流程如下所示 : 初始化 sort_buffer,确定放 阅读全文
posted @ 2020-02-02 15:08 lakeslove 阅读(138) 评论(0) 推荐(0) 编辑
摘要: 崩溃恢复时的判断规则。 如果 redo log 里面的事务是完整的,也就是已经有了 commit 标识,则直接提交; 如果 redo log 里面的事务只有完整的 prepare,则判断对应的事务 binlog 是否存在并完整:a. 如果是,则提交事务;b. 否则,回滚事务。 阅读全文
posted @ 2020-02-01 14:14 lakeslove 阅读(124) 评论(0) 推荐(0) 编辑
摘要: 对于 count(*) 请求来说,InnoDB 只好把数据一行一行地读出依次判断,可见的行才能够用于计算“基于这个查询”的表的总行数。 InnoDB 是索引组织表,主键索引树的叶子节点是数据,而普通索引树的叶子节点是主键值。所以,普通索引树比主键索引树小很多。 对于 count(*) 这样的操作,遍 阅读全文
posted @ 2020-02-01 12:51 lakeslove 阅读(479) 评论(0) 推荐(0) 编辑
摘要: delete 命令其实只是把记录的位置,或者数据页标记为了“可复用”,但磁盘文件的大小是不会变的。 也就是说,通过 delete 命令是不能回收表空间的。 这些可以复用,而没有被使用的空间,看起来就像是“空洞”。 不止是删除数据会造成空洞,插入数据也会。如果数据是按照索引递增顺序插入的,那么索引是紧 阅读全文
posted @ 2020-02-01 12:32 lakeslove 阅读(195) 评论(0) 推荐(0) 编辑
摘要: 第一种是“redo log 写满了,要 flush 脏页”,这种情况是 InnoDB 要尽量避免的。因为出现这种情况的时候,整个系统就不能再接受更新了,所有的更新都必须堵住。如果你从监控上看,这时候更新数会跌为 0。第二种是“内存不够用了,要先将脏页写到磁盘”,这种情况其实是常态。InnoDB 用缓 阅读全文
posted @ 2020-01-31 21:29 lakeslove 阅读(162) 评论(0) 推荐(0) 编辑
摘要: 使用前缀索引,定义好长度,就可以做到既节省空间,又不用额外增加太多的查询成本。 于是,你就有个问题:当要给字符串创建前缀索引时,有什么方法能够确定我应该使用多长的前缀呢? 实际上,我们在建立索引时关注的是区分度,区分度越高越好。 因为区分度越高,意味着重复的键值越少。 因此,我们可以通过统计索引上有 阅读全文
posted @ 2020-01-31 20:13 lakeslove 阅读(396) 评论(0) 推荐(0) 编辑
摘要: 如果使用索引 a,每次从索引 a 上拿到一个值,都要回到主键索引上查出整行数据,这个代价优化器也要算进去的。 而如果选择扫描 10 万行,是直接在主键索引上扫描的,没有额外的代价。 优化器会估算这两个选择的代价,从结果看来,优化器认为直接扫描主键索引更快。 当然,从执行时间看来,这个选择并不是最优的 阅读全文
posted @ 2020-01-31 19:09 lakeslove 阅读(136) 评论(0) 推荐(0) 编辑
上一页 1 ··· 9 10 11 12 13 14 15 16 17 ··· 30 下一页