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??梢圆扇娭扑饕绞絢ey_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... 繼續閱讀 >