丁奇个人页面-阿里云开发者社区

43
18

个人介绍

专注于数据存储系统、MySQL源码研究和改进、MySQL性能优化和功能改进,并设计了阿里云高可靠双通道binlog方案。他在业务场景分析、系统瓶颈分析、性能优化方面拥有丰富的经验。微博@淘宝丁奇。

擅长的技术

获得更多能力
通用技术能力:

暂时未有相关通用技术能力~

云产品技术能力:

暂时未有相关云产品技术能力~

阿里云技能认证

详细说明
  • 高分内容
  • 最新动态
  • 文章
  • 问答
正在加载, 请稍后...
滑动查看更多
正在加载, 请稍后...
暂无更多信息
  • 发表了文章 2016-08-25

    [ AliSQL 开源 ] 问题的一些说明

  • 发表了文章 2016-03-24

    关于InnoDB事务的一个“诡异”现象

  • 发表了文章 2016-03-24

    一个例子与InnoDB索引的几个概念

  • 发表了文章 2016-03-24

    mysql无法正常关闭问题追查

  • 发表了文章 2016-03-24

    MySQL自动测试框架介绍

  • 发表了文章 2016-03-24

    MySQL内置结构hash表的使用

  • 发表了文章 2016-03-24

    InnoDB表快速修改varchar字段长度方案

  • 发表了文章 2016-03-24

    InnoDB表快速修改字段名方案

  • 发表了文章 2016-03-24

    MySQL权限控制的设计缺陷?

  • 发表了文章 2016-03-24

    MySQL核心类THD介绍之user_connect

  • 发表了文章 2016-03-24

    MySQL源码学习:InnoDB的ib_logfile写入策略

  • 发表了文章 2016-03-24

    MySQL源码学习:ib_logfile、bin-log与主从同步

  • 发表了文章 2016-03-24

    MySQL源码学习:简述InnoDB的BP LRU策略

  • 发表了文章 2016-03-24

    MySQL中varchar最大长度是多少?

  • 发表了文章 2016-03-24

    MySQL源码学习:关于 'A' =='A '的问题

  • 发表了文章 2016-03-24

    MySQL源码学习:关于慢查询日志中的Rows_examined=0

  • 发表了文章 2016-03-24

    MySQL源码学习:索引使用统计功能

  • 发表了文章 2016-03-24

    MySQL“异象”分析:备库的io util比主库重?

  • 发表了文章 2016-03-24

    MySQL源码学习:InnoDB关于group commit的简单QA

  • 发表了文章 2016-03-24

    一种MySQL主从同步加速方案-改进

正在加载, 请稍后...
滑动查看更多
  • 回答了问题 2019-07-17

    生产环境下怎么做DDL,如何评估影响时间

    如果有高可靠的主备架构,可以考虑先在备库上做,然后切换后,再新备库再做。

    实际上用5.6不会锁表了,在低峰期直接主库操作也是可以的。

    踩0 评论0
  • 回答了问题 2019-07-17

    数据库中varbinary字段读取后如何判断进行转码的方式

    没有办法,你既然存的是varbinary,读出来就是binary。 至于编码方式,谁放进去的,谁要负责解析。也就是说写入数据的那个业务逻辑是知道的。

    踩0 评论0
  • 回答了问题 2019-07-17

    mysql 日志方面的问题

    ib_logfile 是innodb的物理日志。
    从物理日志里面是反推不出执行语句的。
    目前也没有什么好用的工具解析这两个文件,主要原因是解读出来也是一些需要很专业的人才能看得懂的信息。
    你有这个需求,还是应该开启二进制日志。

    踩0 评论0
  • 回答了问题 2019-07-17

    如何从库自动删除localhost-relay-bin 日志文件

    这个是mysql的中转日志文件,备库收到主库的日志,会写到relaylog里面。relaylog在备库apply完成后就会自动删除。会留这么多,说明主备有延迟。这些文件是不能删除的,否则你的备库就跟主库数据不一致了。

    解决方法就是想办法让备库的的apply速度提升,如果备库追上主库,其实你的relaylog应该一般只有两个文件。

    踩0 评论0
  • 回答了问题 2019-07-17

    在系统变量未做调整,数据库连接数较少的情况下,MySQL内存为何逐日增加?

    把里面的连接断开看看? MySQL线程在线程变量较多、prepare stmt没有正确释放、存储过程较多等情况下都可能会导致内存积累,上述情况断开所有客户端连接可以解决。

    踩0 评论0
  • 回答了问题 2019-07-17

    mysql中slow_query和slow_queries的区别

    "show global status like 'slow_query';
    结果显示为empty"
    表示没有这个名字的status;

    "show global status like 'slow_queries';
    结果却显示为大于0的数字"
    才是真实的慢查询数。

    简单说,就是 show global status like 'slow_query' 这句话写错了

    踩0 评论0
  • 回答了问题 2019-07-17

    mysql部分数据被隐藏,什么原因?

    这种往往是数据错误。没有条件的查询,走的是主键索引; 有where 的查询,可能走另外一个普通索引。如果主键索引的数据和普通索引的数据不一致,查出来的条数就会不同。这种往往出现在mysql或者机器有异常重启的情况。如果是MyISAM,这个情况更常见。

    踩0 评论0
  • 回答了问题 2019-07-17

    如何解决电商超卖和并发问题

    直接使用阿里云RDS for mysql 提供的秒杀功能。将您的实例名和需求发个工单说明,我们可以提供护航服务。收费,但解决问题~

    踩0 评论0
  • 回答了问题 2019-07-17

    数据库数据转移比较麻烦,不知道有没有好的方法,现在是读写分离的?

    如果数据有定时转移的需求,最好设计成按时间分表,这样删除的时候,可以用truncate或者drop的方式。
    至于需要读走数据,有读写分离,应该问题不大?

    另外,如果可以多搭建一个备库,方案会灵活很多。

    踩0 评论0
  • 回答了问题 2019-07-17

    Mysql No operations allowed after statement closed.异常

    这个报错是指连接已经断开,还用这个断开的句柄去操作。
    连接断开有很多种原因了。比如客户端连接池问题、服务端kill session、服务端shutdown等,需要具体查原因

    踩0 评论0
  • 回答了问题 2019-07-17

    最新文章和最新评论怎么一起做查询?

    这个设计并不好,建议在文章表里面增加一个字段叫做 last_active_time.
    在创建文章的时候,让last_active_time=created, 有评论的时候也更新文章表.last_active_time

    这样可以直接用 last_active_time 排序,省去了join一类的操作

    踩0 评论0
  • 回答了问题 2019-07-17

    MySQL索引range出现group by怎么优化

    1、是的,原语句的group by fname必须要filesort
    2、即使建了 idx_F2(fid,fname) 也不一定会用上,MySQL优化器大部分时候会考虑以过滤条件为准,除非你的语句中使用force index来强制使用。

    踩0 评论0
  • 回答了问题 2019-07-17

    mysql通过判断来更新本张表数据的问题

    这个需求建议用触发器做,比较简单一点

    踩0 评论0
  • 回答了问题 2019-07-17

    mysql没有默认密码不能登录,要怎么解决

    那是你自己本地设置了初始化密码,需要用正确的密码连接。
    如果你自己忘记,并且要恢复,可以在my.cnf中增加 skip-grant-tables, 然后重启。这样可以无密码登陆,且有任何权限。进去后重置本地账户的root密码(修改mysql.user表)

    再重启一次,以本地root无密码方式登陆即可。
    PS:这个设置是不安全的,不建议这么做

    踩0 评论0
  • 回答了问题 2019-07-17

    sql合并多条记录为一条

    文字版回答发不出去,见截图

    screenshot

    踩0 评论0
  • 回答了问题 2019-07-17

    sql查询时动态更换连接表

    这个比较简单的是用存储函数来实现。

    http://dev.mysql.com/doc/refman/5.5/en/create-procedure.html

    另外,从您这个描述中,隐约感觉表结构设计不合理。
    既然可以用type来区分不同的course类型,是否也可以按照类似的设计,将t_course_info 和 t_venue_course_info 放到一起,用类型来区分?这样上面的join问题也解决了。
    只是常规建议,具体是否可行还是需要视项目情况。

    踩0 评论0
  • 回答了问题 2019-07-17

    MYSQL提交数据后,等一会才能生效,是怎么回事呢?

    按照您的描述,比较大的可能是:
    1) 两个http请求使用的不是同一个连接。
    2) 而第一个提交动作其实并不是正的commit,而是只是插入成功。

    我们经常有客户发现类似的问题,就是java connector会默认使用set autocommit=0的模式。
    这样第一个线程执行成功后,其实并没有提交事务,
    第二个线程去查的时候是查不到的。

    这个是一种比较常见的可能。至于要确诊,您可以开启RDS的审计日志,从数据库的执行语句序列中印证原因。

    踩0 评论0
  • 回答了问题 2019-07-17

    mysql sql语句消耗内存问题

    首先,这种语句逻辑在MySQL服务端是不需要保存所有数据的,因为是按顺序扫描,可以认为耗费的内存核小。
    至于客户端, mysql 客户端有一个--quick 参数,在你的这种业务需求中,应该使用这个参数。这样客户端在读取数据的时候,会一行行读一行行写到目标文件, 不需要将数据全部保存到内存里面。

    踩0 评论0
正在加载, 请稍后...
滑动查看更多