Skip to content

tcyfree/mysql-optimization-and-principle-analysis

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

72 Commits
 
 
 
 
 
 
 
 

Repository files navigation

《MySQL性能优化与架构实践》


原创内容,转载请注明出处 ~

一、选题产生的背景、市场需求情况及产品定位

1.1 选题背景

    几乎每个程序员都要和数据库打交道,简单的程序开发可能仅仅是用来存数据、建表、建索引和做增删改查。但是为了获得良好的SQL语句和提升用户体验,往往需要优化数据库设计。比如最常优化的数据库索引,那么一定避免不了研究索引的原理,MySQL官方对索引的定义为:索引(Index)是帮助MySQL高效获取数据的数据结构。提取句子主干,就可以得到索引的本质:索引是数据结构。如果想要真正明白索引是怎么工作的,如何合理的使用索引以优化数据库,就必须将数据结构和算法作为切入点去学习。遗憾的是我目前还没有在网上找到从原理层面去介绍数据库索引的资料(这里仅指在通俗资料领域没找到,不包括学术论文),倒不是说没有高水平的程序员,只是由于工作的忙碌和个人兴趣原因,大牛们没有时间或没有兴趣去写这方面的文章。由于工作的需要,研究了一些关于MySQL数据库原理和优化方面的的资料,虽然对这方面的理解相比那些大牛差的太远了,不过这里我将这些浅薄的知识总结成文。

1.2 市场需求

    MySQL是Web世界中使用最广泛的数据库服务器。和其他数据库系统相比,MySQL最重要的特点是插件式存储引擎体系结构,即数据处理和存储分离,可以在使用时根据性能、特性以及其他需求来选择数据存储的方式。MySQL由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择MySQL作为网站数据库。

    在开发和使用MySQL及其后的管理维护过程中,我们也经常遇到一些问题如:MySQL提供了许多存储引擎,这些存储引擎各有特点,在实际应用中应该怎样选择?MySQL出现了性能问题,应该如何来诊断和优化?在数据安全方面,需要注意些什么?MySQL的锁机制有什么特点,如何减少锁冲突,提高并发度?通到诸如此类的问题,自然会想到查阅MySQL文档、上网搜索、到论坛找类似问题的答案或寻求帮助等。通过上述途径当然可以解决许多问题,但却需要花费大量的精力和时间效率很低。因为,我们发现 MySQL的文档很“精练”,也很零碎,写的比较晦涩难懂。网上搜答案,结果可能数以万计,面对浩如烟海的网页,要找出真正有用的信息决非易事,至于论坛上的答案,又往往是五花八门,让人无所适从。给我们开发人员来说带来了一定的学习阻碍。

    因此在实际编程和学习过程中,习惯把每个知识点记录下来,一是备自己日后学习,二是为后来者提供一些参考。平时写技术文章尽可能把晦涩难懂的理论简单化、通俗化而不破坏原有理论的正确性。对于比较复杂难以理解的原理,用图画加以说明便于领会其中的含义,获得了网友不错的反应。

1.3 产品定位

    入门或初中级研发人员使用MySQL基本停留在增删改查层面,会基本的使用,但很少了解其中的原理。因此本书的定位是一本适合初级入门和有工作经验的IT程序员学习数据库方面的书籍,它区别于理论教材,以MySQL知识原理、优化和架构为主。     数据库是大多数系统的核心组件,数据库是否稳定和高效直接决定了整个应用系统是否稳定和高效。更好的了解和使用关系型数据库,每章都涉及一个或多个对MySQL性能有影响的因素及性能优化方法,你可以从课程的第一章从头学起,也可以自主选择相应的章节进行学习。通过具体实例对MySQL背后的设计思想和原理进行详细分析,使读者既能够掌握并运用该知识点,又能够理解其背后的深层次原理。

二、内容简介

    本书以最新MySQL5.7版本为例讲解,主要从以下三个方面来展开:

    1、基础原理篇:服务器硬件、存储设备、数据库配置、数据库存储引擎、事务、锁机制、数据库结构、SQL查询和索引数据结构等,为优化篇打下牢固的基础。

    2、优化篇:如何设计合理的数据库结构、深入分析索引优化及SQL查询优化。更详尽深入的理解其中各个原理,以便在合适的情况下使用合适解决方案,进而达到从特殊到一般的泛化思维。

    3、架构篇:常见开发中架构处理方案如:MySQL读写分离如何实现、分库分表的实现、数据库如何监控、如何不影响业务的前提下进行主从切换和故障转移、如何进行数据库的读写分离和负载均衡配置、如何在生产环境下对大表及大事务进行处理,避免对业务的影响、对大家比较关心的数据库分库分表问题进行说明、如何对数据库进行监控以便更快的发现数据库中所存在的问题。

四、本书特色

    本书是关于MySQL原理与优化方面专著,在创作形式方面:本文通过非常简易写作风格,把晦涩难懂的理论原理做深入简出,从文字排版到画图,简明易懂。数据实例不会涉及过于抽象的业务知识,通过具体数据实例对MySQL背后的设计思想和原理进行详细分析,力图使读者能够通过实际操作快速入门和理解MySQL相关知识。

    在图书内容方面,本书主要面向的是所有希望从事研发岗位和MySQL开发的IT从业人员。当前市场中的同类书较少,适应国内市场,读者面广泛。本书涵盖了实际开发中的重要知识点,内容详尽,可读性及可操作性强。

    图文并茂,一图值千言。用上千个字描述不明白的东西,很可能一张图就能解释清楚。我非常认可这个观点,所以本书对于一些难点都基本相关图示,关键算法更是通过多图逐步分解剖析。尽管这带来了写作上的难度,但却可以达到较好的效果。要从无所知或略知一二到完全理解,甚至掌握应用,是需要一个比较艰苦的过程,用大量的图示可以减少这个过程的长度。

五、最想让读者了解关于本书的信息

    目前国内MySQL优化和原理解析方面教材比较缺少,而市面上大多数书籍面向专业DBA而写,一定程度上比较晦涩难懂。本书是在学习、实际工作中实践及培训过程中的心得体会和系统总结。重基础,将概念尽可能理解透彻。常见的误区, 查漏补缺平时容易忽略的地方,希望可以对已有知识有新的理解和认识。本身内容涵盖三个部分。基础篇:什么影响了数据库查询速度、什么影响了MySQL性能、MySQL中字段类型与合理的选择字段类型。优化篇:数据库结构优化,数据库索引优化、 SQL查询优化、MySQL常见问题与优化。架构篇:MySQL主从复制和MyCat数据库中间件实现读写分离、MySQL主从复制和MyCat数据库中间件实现读写分离以及备份与恢复详解等常用知识及原理解析。书中利用大量的具体示例和形象生动的图示来说明MySQL背后设计原理,使读者既能够掌握该知识点,又能够理解其背后的深层次原理。使读者朋友知其然,更知其所以然。

Releases

No releases published

Packages

No packages published