201810-19 携程实时用户行为系统实践 携程实时用户行为服务作为基础服务,目前普遍应用在多个场景中,比如猜你喜欢(携程的推荐系统),动态广告,用户画像,浏览历史等等。以猜你喜欢为例,猜你喜欢为应用内用户提供潜在选项,提高成交效率。旅行是一项综合性的需求,用户往往需要不止一个产品。作为一站式的旅游服务平台,跨业务线的推荐,特别是实时推荐,能实际满足用户的需求,因此在上游提供打通各业务线之间的用户行为数据有很大的必要性。携程原有... 继续阅读 >
201808-02 MySQL并行复制的深入浅出 一、并行复制的背景首先,为什么会有并行复制这个概念呢?1.DBA都应该知道,MySQL的复制是基于binlog的。2.MySQL复制包括两部分,IO线程和SQL线程。3.IO线程主要是用于拉取接收Master传递过来的binlog,并将其写入到relaylog4.SQL线程主要负责解析relaylog,并应用到slave中5.不管怎么说,IO和SQL线程都是单线程的,然后master却是多线程的,所以难免会有延迟,为了解决这个问题,多线程应运而生... 继续阅读 >
201803-20 提高MySQL性能的7个技巧 译者注:随着尺寸和负载的增长,MySQL的性能会趋于下降。记住这些诀窍,便可保持MySQL的流畅运行。测量应用程序的方法之一是看性能。而性能的指标之一便是用户体验,通俗的说法就是“用户是否需要等待更长的时间才能得到他们想要的东西”。这个指标在不同的应用场合而有所改变。对于移动购物应用,响应时间不能超过几秒钟。对于员工的人力资源页面,可能需要多花几秒钟的时间。有很多关于性能如何影响用户行为... 继续阅读 >
201802-21 MySQL 统计信息以及执行计划预估方式初探 数据库中的统计信息在不同(精确)程度上描述了表中数据的分布情况,执行计划通过统计信息获取符合查询条件的数据大小(行数),来指导执行计划的生成。在以Oracle和SQLServer为代表的商业数据库,和以开源的PostgreSQL为代表的数据库中,直方图是统计信息的一个重要组成部分。在生成执行计划的时候,通过统计信息以及统计信息的直方图来预估符合条件的数据行数,从而影响执行计划的生成。统计信息对执行计划的影响... 继续阅读 >
201801-16 由FTWRL导致的MySQL从库死锁分析及参数深究 最近线上执行备份的从库时出现复制卡死现象,分析以后发现是两个死锁,showfullprocesslist的状态如图1所示,其中,数据库版本是官方5.7.18版本,我们内部做了些许修改,但与此次死锁无关。图一先说一下结论,图一中:162线程是执行innobackup执行的flushtableswithreadlock;144是SQL线程,并行复制中的Coordinator线程;145/146是并行复制的worker线程,145/146worker线程队列中的事务可... 继续阅读 >
201801-11 全面Docker化之后,京东弹性数据库的最新实践与突破! 京东弹性数据库不是一个单一的产品,而是京东在对数据库的使用、运维和开发过程中遇到的一系列问题的解决方案,和运维经验的总结升华进而形成的一套产品系列,主要包括三大功能模块:核心功能模块:JED,提供数据查询和写入的自动路由、自动弹性伸缩、自动FailOver、自动负载调度和数据库服务智能自治的功能。实时数据发布与订阅模块:BinLake,完全自助、无状态、自动负载、完全自治、可横向扩展的集群化Binlog... 继续阅读 >
201712-06 项目中常用的19条MySQL优化 声明一下:下面的优化方案都是基于“Mysql-索引-BTree类型”的一、EXPLAIN做MySQL优化,我们要善用EXPLAIN查看SQL执行计划。下面来个简单的示例,标注(1,2,3,4,5)我们要重点关注的数据type列,连接类型。一个好的sql语句至少要达到range级别。杜绝出现all级别key列,使用到的索引名。如果没有选择索引,值是NULL。可以采取强制索引方式key_len列,索引长度rows列,扫描行数。该值是个预估值ex... 继续阅读 >
201711-25 MySQL · 最佳实践 · SQL Server三种常见备份 已认证的机构 摘要本期月报是SQLServer数据库备份技术系列文章的开篇,介绍三种常见的SQLServer备份方法的工作方式、使用T-SQL语句和使用SSMSIDE创建备份集三个层面,介绍SQLServer的三种常见备份的工作原理和使用方法。三种常见的备份包括:数据库完全备份(FullBackup)数据库日志备份(TransactionLogBackup)数据库差异备份(DifferentialBackup)备份的重要性在开始分享之前,我们首先来看看数据... 继续阅读 >
201711-25 Twitter 架构如何支持上亿用户 谈到设计Twitter,我们首先要问一个本质问题:设计Twitter的基本方法论是什么?其实是我们计算机设计最基本的方法:分治法(DivideandConquer)。什么是分治法呢?就是把问题不断的拆解,拆解到你可以解决为止,它的艺术在于,从哪个维度来拆解非常考验我们能力。如果要求一周开发出Twitter,你会怎么做?你的架构是什么样的呢?相信你一定不会给出复杂的架构。前端是各种各样的业务逻辑,后端... 继续阅读 >
201711-20 MyFlash——美团点评的开源MySQL闪回工具 由于运维、DBA的误操作或是业务bug,我们在操作中时不时会出现误删除数据情况。早期要想恢复数据,只能让业务人员根据线上操作日志,构造误删除的数据,或者DBA使用binlog和备份的方式恢复数据,不管那种,都非常费时费力,而且容易出错。直到彭立勋首次在MySQL社区为mysqlbinlog扩展了闪回功能。在美团点评,我们也遇到过研发人员误删主站的配置信息,从而导致主站长达2个小时不可用的情况。DBA同学当时使用了技术团队自研... 继续阅读 >
201708-22 拆解 MySQL 的高阶使用与概念 前面我们主要分享了MySQL中的常见知识与使用。这里我们主要分享一下MySQL中的高阶使用,主要包括:函数、存储过程和存储引擎。对于MySQL中的基础知识,可以参见《与MySQL的零距离接触》1函数函数可以返回任意类型的值,也可以接收这些类型的参数。字符函数函数名称描述CONCAT()字符连接CONCAT_WS()使用指... 继续阅读 >
201708-22 用 Node + MySQL 处理 100G 数据 通过这个Node.js和MySQL示例项目,我们将看看如何有效地处理数十亿行占用数百GB存储空间的数据。本文的第二个目标是帮助你确定Node.js+MySQL是否适合你的需求,并为实现此类解决方案提供帮助。本文章使用的实际代码可以在GitHub上找到。为什么使用Node.js和MySQL?我们使用MySQL来存储我们的Node.js监控和调试工具用户的分布式跟踪数据Trace。我们选择了MySQL,因为在决定的时候... 继续阅读 >
201708-01 10个提升MySQL性能的小技巧 从工作量分析到索引的三条规则,这些专家见解肯定会让您的MySQL服务器尖叫。在所有的关系数据库中,MySQL已经被证明了完全是一头野兽,只要通知停止运行就绝对不会让你多等一秒钟,使你的应用置于困境之中,你的工作也承受极大的风险。不过事实是,普通的错误都在MySQL性能错误的射程之内。所以为了使你的MySQL服务器能够高速运转,提供稳定且持续的服务,消除这些错误是非常有必要的,但是这可能常常会被你的繁忙... 继续阅读 >
201705-04 我必须得告诉大家的MySQL优化原理 说起MySQL的查询优化,相信大家积累一堆技巧:不能使用SELECT*、不使用NULL字段、合理创建索引、为字段选择合适的数据类型.....你是否真的理解这些优化技巧?是否理解其背后的工作原理?在实际场景下性能真有提升吗?我想未必。因而理解这些优化建议背后的原理就尤为重要,希望本文能让你重新审视这些优化建议,并在实际业务场景下合理的运用。MySQL逻辑架构如果能在头脑中构建一幅MySQL各组件之间如何协同工作的架构... 继续阅读 >
201703-23 MySQL与PostgreSQL相比哪个更好? 网上已经有很多拿PostgreSQL与MySQL比较的文章了,这篇文章只是对一些重要的信息进行下梳理。在开始分析前,先来看下这两张图:MySQLMySQL声称自己是最流行的开源数据库。LAMP中的M指的就是MySQL。构建在LAMP上的应用都会使用MySQL,如WordPress、Drupal等大多数php开源程序。MySQL最初是由MySQLAB开发的,然后在2008年以10亿美金的价格卖给了Sun公司,Sun公司又在2010年被Oracle收购。Oracle支持MySQL的多个... 继续阅读 >
201612-13 Mysql 常用 SQL 语句大全 基础篇//查询时间,友好提示$sql="selectdate_format(create_time,'%Y-%m-%d')asdayfromtable_name";//int时间戳类型$sql="selectfrom_unixtime(create_time,'%Y-%m-%d')asdayfromtable_name";//一个sql返回多个总数$sql="selectcount(*)all,";$sql.="count(casewhenstatus=1thenstatusend)status_1_num,";$sql.="count(casewhenstatus=2thenstatusend)status_2_num";$sql... 继续阅读 >