189 8069 5689

mysql该怎么学

这篇文章主要讲解了“MySQL该怎么学”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“mysql该怎么学”吧!

溧水ssl适用于网站、小程序/APP、API接口等需要进行数据传输应用场景,ssl证书未来市场广阔!成为成都创新互联的ssl证书销售渠道,可以享受市场价格4-6折优惠!如果有意向欢迎电话联系或者加微信:13518219792(备注:SSL证书合作)期待与您的合作!

MySQL24种系统特性

1.使用 C和C++编写,并使用了多种编译器进行测试,保证了源代码的可移植性。

2.支持AIX、FreeBSD、HP-UX、Linux、Mac OS、NovellNetware、OpenBSD、OS/2 Wrap、Solaris、Windows等多种操作系统。

3.为多种编程语言提供了API。这些编程语言包括C、C++、Python、Java、Perl、PHP、Eiffel、Ruby,.NET和 Tcl 等。

4.支持多线程,充分利用 CPU 资源。

5.优化的SQL查询算法,有效地提高查询速度。

6.既能够作为一个单独的应用程序应用在客户端服务器网络环境中,也能够作为一个库而嵌入到其他的软件中。

7.提供多语言支持,常见的编码如中文的GB 2312、BIG5,日文的Shift_JIS等都可以用作数据表名和数据列名。

8.提供TCP/IP、ODBC 和JDBC等多种数据库连接途径。

9.提供用于管理、检查、优化数据库操作的管理工具。

10.支持大型的数据库。可以处理拥有上千万条记录的大型数据库。

11.支持多种存储引擎。

12.MySQL 是开源的,所以你不需要支付额外的费用。

13.MySQL 使用标准的SQL数据语言形式。

14.MySQL 对 PHP 有很好的支持,PHP是比较流行的 Web 开发语言。

15.MySQL是可以定制的,采用了GPL协议,你可以修改源码来开发自己的 MySQL 系统。

16.在线 DDL/更改功能,数据架构支持动态应用程序和开发人员灵活性(5.6新增)

17.复制全局事务标识,可支持自我修复式集群(5.6新增)

18.复制无崩溃从机,可提高可用性(5.6新增)

19.复制多线程从机,可提高性能(5.6新增)

20.3倍更快的性能(5.7[7]新增)

21.新的优化器(5.7新增)

22.原生JSON支持(5.7新增)

23.多源复制(5.7新增)

24.GIS的空间扩展[8](5.7新增)

好哒,那知道了这些之后,我们接下来看调优,这也是在面试的过程中被经常问到的一些问题,而且随着互联网的发展,数据量的增大,不想引入大数据体系的,那只能在数据库上下功夫了,那么对于数据库的调优,不知道各位觉得难?其实真的不难,不信,看下面

MySQL调优思维导图

mysql该怎么学

看到这张思维导图,从上往下,不知道在看这篇文章的你有没有回想一下自己的知识体系中,这些方面是不是很清晰呢?

好,看完这句话,我的重点要来了,你在回想这些知识点的时候,是不是对你的知识点进行了一个回顾和梳理,查漏补缺,你也知道了自己知识点上的不足,是不是可以有针对性的进行学习呢

我们以分库和分表为例去进行一个商讨

分库分表

1、水平分库

mysql该怎么学

概念:以字段为依据,按照一定策略(hash、range等),将一个库中的数据拆分到多个库中。

结果:

  • 每个库的结构都一样;

  • 每个库的数据都不一样,没有交集;

  • 所有库的并集是全量数据;

场景:系统绝对并发量上来了,分表难以根本上解决问题,并且还没有明显的业务归属来垂直分库。

分析:库多了,io和cpu的压力自然可以成倍缓解。

2、水平分表

mysql该怎么学

概念:以字段为依据,按照一定策略(hash、range等),将一个表中的数据拆分到多个表中。

结果:

  • 每个表的结构都一样;

  • 每个表的数据都不一样,没有交集;

  • 所有表的并集是全量数据;

场景:系统绝对并发量并没有上来,只是单表的数据量太多,影响了SQL效率,加重了CPU负担,以至于成为瓶颈。推荐:一次SQL查询优化原理分析

分析:表的数据量少了,单次SQL执行效率高,自然减轻了CPU的负担。

3、垂直分库

mysql该怎么学

概念:以表为依据,按照业务归属不同,将不同的表拆分到不同的库中。

结果:

  • 每个库的结构都不一样;

  • 每个库的数据也不一样,没有交集;

  • 所有库的并集是全量数据;

场景:系统绝对并发量上来了,并且可以抽象出单独的业务模块。

分析:到这一步,基本上就可以服务化了。例如,随着业务的发展一些公用的配置表、字典表等越来越多,这时可以将这些表拆到单独的库中,甚至可以服务化。再有,随着业务的发展孵化出了一套业务模式,这时可以将相关的表拆到单独的库中,甚至可以服务化。

4、垂直分表

mysql该怎么学

概念:以字段为依据,按照字段的活跃性,将表中字段拆到不同的表(主表和扩展表)中。

结果:

  • 每个表的结构都不一样;

  • 每个表的数据也不一样,一般来说,每个表的字段至少有一列交集,一般是主键,用于关联数据;

  • 所有表的并集是全量数据;

场景:系统绝对并发量并没有上来,表的记录并不多,但是字段多,并且热点数据和非热点数据在一起,单行数据所需的存储空间较大。以至于数据库缓存的数据行减少,查询时会去读磁盘数据产生大量的随机读IO,产生IO瓶颈。

分析:可以用列表页和详情页来帮助理解。垂直分表的拆分原则是将热点数据(可能会冗余经常一起查询的数据)放在一起作为主表,非热点数据放在一起作为扩展表。这样更多的热点数据就能被缓存下来,进而减少了随机读IO。拆了之后,要想获得全部数据就需要关联两个表来取数据。

但记住,千万别用join,因为join不仅会增加CPU负担并且会两个表耦合在一起(必须在一个数据库实例上)。关联数据,应该在业务Service层做文章,分别获取主表和扩展表数据然后用关联字段关联得到全部数据。

好了,到这里,分库和分表的操作基本就完成了,不知道大家有没有什么感觉,如果知识只是单纯的去看这些知识点,你能记住多久呢?反正如果我长时间不看,就忘了,,但是我不怂 啊,因为我有这张图,而且比展示出来的更加详细,所以当我需要用到时候就可以看了,直接就可以拿出来看,哪怕只有10分钟就够了。

感谢各位的阅读,以上就是“mysql该怎么学”的内容了,经过本文的学习后,相信大家对mysql该怎么学这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是创新互联,小编将为大家推送更多相关知识点的文章,欢迎关注!


文章标题:mysql该怎么学
标题来源:http://cdxtjz.cn/article/ijehhc.html

其他资讯