Upgrade to Pro — share decks privately, control downloads, hide ads and more …

YesSQL, Process and Tooling at Scale

YesSQL, Process and Tooling at Scale

SQL databases have been a primary data storage for more than four decades and at GitHub that hasn't been the exception, but scaling applications also means scaling teams. We not only need to make sure that the application can support the load, but also that engineers can keep building performant and usable features.

This talk will dig into how GitHub creates a culture of performance to keep delivering a product that is fast and highly available.

Rocio Delgado

September 14, 2016
Tweet

Other Decks in Technology

Transcript

  1. FIN

  2. FIN

  3. " # $ 16+ M Users 125+ M Issues 38+

    M Repos % 78+ M Pull Requests* * Since 2010
  4. " & ' Everybody’s responsibility Process & Tooling Metrics Performance

    Culture " & ' Everybody’s responsibility Process & Tooling Metrics
  5. + ( ( ( ( ( ( ( ( (

    ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (
  6. MySQL ✴ Predictability ✴ Scalability ✴ High performance ✴ High

    availability ✴ Operational experience ✴ Optimized for fast reads
  7. ✴Build indexes for performance critical queries ✴Build index order that

    benefits more queries ✴SELECT * FROM issues WHERE user_id = 2 AND repository_id = 2; ✴SELECT * FROM issues WHERE user_id > 2 AND repository_id= 2; ✴INDEX ON (repository_id, user_id) is best ✴Prefer to extend an existing index rather than create a new one ✴Favor multi column indexes
  8. Unnecessary indexes ✴ Indexes require space, the more you have

    the bigger the table. ✴ Write operations will be slower.