前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >每日一剂—mysql事务锁 & git reflog

每日一剂—mysql事务锁 & git reflog

作者头像
阿dai学长
发布2019-07-04 10:50:19
5090
发布2019-07-04 10:50:19
举报
文章被收录于专栏:阿dai_linux

查找mysql事务锁

  • 查看事务和锁的信息 show engine innodb status;
  • explain内容解析 mysql> explain select * from t where cell="111111111111"; +----+-------------+-------+-------+---------------+------+---------+-------+------+-------------+ | id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra | +----+-------------+-------+-------+---------------+------+---------+-------+------+-------------+ | 1 | SIMPLE | t | const | cell | cell | 83 | const | 1 | Using index | +----+-------------+-------+-------+---------------+------+---------+-------+------+-------------+ 1 row in set (0.00 sec)
    • select_type:SIMPLE,这是一个简单类型的SQL语句,不含子查询或者UNION。
    • type:index,访问类型,即找到所需数据使用的遍历方式,潜在的方式:
      • ALL(Full Table Scan):全表扫描;
      • index:走索引的全表扫描;
      • range:命中where子句的范围索引扫描;
      • ref/eq_ref:非唯一索引/唯一索引单值扫描;
      • const/system:常量扫描;
      • NULL:不用访问表;

      上述扫描方式,ALL最慢,逐步变快,NULL最快。

    • possible_keys:NULL,可能在哪个索引找到记录。
    • key:PRIMARY,实际使用索引。(画外音:使用PK进行的全表扫描。)
    • ref:NULL,哪些列,或者常量用于查找索引上的值。
    • rows:1,找到所需记录,预估需要读取的行数。

git-reflog

reflog 是一个非常实用的命令,你可以使用这个命令去找回无意间删除的代码,或者去掉一些刚刚添加的却把仓库里的代码弄坏的内容。同时也可以拯救一下失败的 merge,或者仅仅是为了回退到之前的版本。

  • 情景1:我刚刚好像搞错了一个很重要的东西,但是 git 有个神奇的时间机器能帮我复原! $ git reflog # reflog 可以查看在所有分支上所做的全部改动 # 每一个改动都会有一个编号 HEAD@(index) # 找到问题所在 $ git reset HEAD@(index) # git 神奇的时间机器,将代码重置到指定位置
  • 情景2:我 commit 完才想起来还有一处小地方要修改! # 先做好修改 $ git add . # or add 相关文件 $ git commit --amend # 然后选择要不要保留或者更高 commit message # 现在你的 commit 已经包含最新的修改内容 当我 commit 完然后跑测试的时候,经常突然发现忘了在等于号前面加空格。虽然可以把修改过的代码再重新 commit 一下,然后 rebase -i 将两次揉在一起,不过上面的方法会比较快。
  • 情景3:我要改一下上一个 commit message! $ git commit -amend # 然后可以更改 commit message 当你们组对 commit message 有格式要求时,或者当你忘了中英文间要加空格,这个命令能救你狗命。
  • 情景4:我不小心把本应在新分支上的内容commit 到 master 了! # 先以现有 master 的状态创建一个新的分支 $ git branch some-new-branch-name # 移除错误的 commit $ git reset HEAD~ --head $ git checkout some-new-branch-name # 现在的分支就含有所有你所需要的东西了 注意: 这个指令必须在错误的 commit 后直接执行,如果你已经试了其他的方式,你可能就需要用 git reset HEAD@{number} 来代替 HEAD~ 了。
  • 情景5: 我不小心 commit 到错误的分支上了! # 撤回上一次 commit 但是保留改动 $ git reset HEAD~ --soft $ git stash # 将改动提交到正确的分支 $ git checkout name-of-the-correct-branch $ git stash pop $ git add . # or add individual files $ git commit -m "提交信息" # 现在的你改动已经成功 commit 到正确的分支上了 也有很多人推荐了 cherry-pick 的解决方案,所以选哪个就看你心情了。 $ git checkout name-of-the-correct-branch # 将改动从错误的分支上摘取下来放到正确的分支上 $ git cherry-pick name-of-the-wrong-branch # 然后再错误的分支上删除相应的改动 $ git checkout name-of-the-wrong-branch $ git reset HEAD~ --hard
  • 情景6:我执行了 diff 但是啥也没出现 $ git diff --staged Git 不会给通过 add 加入到 staging 区域里面的文件做 diff ,除非你加了 --staged 的标签,别怀疑了这是一个 feature 不是一个 bug,当然对于第一次碰到这个问题的人来说还是有些不好理解的。 $ git checkout name-of-the-correct-branch # 将改动从错误的分支上取下来放到正确的分支上 $ git cherry-pick name-of-the-wrong-branch # 然后再错误的分支上删除相应的改动 $ git checkout name-of-the-wrong-branch $ git reset HEAD~ --hard

(adsbygoogle = window.adsbygoogle || []).push({});

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • git-reflog
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档