MYSQL技术连环斩-MYSQL简述

本文涉及的产品
云原生数据库 PolarDB MySQL 版,Serverless 5000PCU 100GB
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介:

前言:严格的来说,MYSQL是一款产品而不是一项技术。关于技术和产品的论述,请参考我的博文。现在进行小结一下。可以说数据库技术是为了解决数据之间如何聚合,聚合的数据如何管理的问题。为了实际上的真正应用,就必须选择一款相应的产品。所以说产品是技术的一个实例。从面相对象的逻辑来思考这个问题,数据库技术是一个类,而MYSQL是它的一个对象。

一、关于数据库。

1、为什么会产生数据库?

我们所俗称的电脑它的正式名称叫计算机,很明显计算机所要做的工作就是进行计算,而当你把它从数学这个学科的角度去理解,那么很明显计算需要数据,于是数据就产生了。在计算机中我们可以把很多现实中存在的实物和非实物都转化成数据。比如一个字母A,可能就变成了010101这样的数据。好的,数据不可能只有一个,所以这个数据量就会很大,这个时候我们需要考虑的是如何把相互关联的数据整合在一起?这样做的好处是便于查询,也方便管理,所以也就有了数据库的概念。关于学术上严禁的概念我不在这里复制了,任何一本数据库相关的书都会写到,我只想用更加通俗的语言去解释这个名词。数据库这个词我们可以从宏观和微观上来看。从微观上看,数据库就是数据的集合,这里集合的概念与数学中集合的概念相同。从宏观上看,数据库其实就是一个容器。你可以把他想象成一个杯子,一个碗,只不过里面盛放的不是水而是数据。

2、数据库与数据库管理系统。既然数据库是一个容器,实际上我们需要做的就是往容器里面放东西和取东西。那么必须有这么一套系统用来进行这些操作。这就是数据库管理系统。所以说我们常见的MYSQL ,MS SQL SERVER ,ORACLE等都是数据库管理系统。这里与现实不同的是,数据库管理系统创造的数据库之间是不能通用的。比如MYSQL造的容器像是一个试管,ORACLE造的容器像是一个广口瓶。

3、关系型数据库。前面说到了数据库像是一个容器。现在我们有新的问题了,虽然有容器了,但是我们还有一个问题没有解决。就是数据与数据之间依靠什么样的形式聚合在一起,不能像大烩菜一样混乱的放在一起吧。根据数据之间的联系不同,就不了不同类型的数据库,其中目前势力最大的,最火的就是关系型数据库。(近年来,面相对象的数据库开始流行起来了)所谓关系型数据库简单的理解就是一张二维表。数据之间都是靠这种二维表产生联系的。就像是你再用EXCEL画的一张表一样。关系型数据库就是由一张或多张这种表组成的。如果你总是被关系这个词搞的很迷糊,那么你就暂且关系型数据库=表数据库这么认为吧。

4、关系数据库的几个概念。

既然关系数据库是由表生成的,那么久需要理解几个概念了。

记录:我们把表中的每一行叫做一个“记录”,每一个记录包含这行中的所有信息。

字段;我们把每一列叫做一个“字段”。每个字段包含某一专题的信息。

值:在数据库中存放在表行列交叉处的数据叫做“值”,

这三个名词在所有关系数据库中都成立。

二、关于MYSQL数据库

这是一篇技术文章,所以关于MYSQL数据库的历史就不说了,有兴趣的朋友请自行BAIDU一下。目前MYSQL数据库的所有权归ORACLE公司所有。

1、为什么要用MYSQL

A、流行度高。MYSQL数据库在数据库技术领域中可能不能排名第一,但是个人认为排名一定在前十或前五。学习技术特别是一个产品一定学热门的东西。这样你从A公司使用熟悉后,又到了B公司可以继续使用。否则可能随着时间的流逝,你也会忘光的。特别是基于WEB站点,很多WEB都采用了LAMP架构,其中的M就是MYSQL数据库。即使像一些门户网站也是用该数据库。

B、体积小巧、安装简单。就和很多鼓吹ORACLE数据库是多么万能和强大的时候,其实它自身的问题也是缺点。MYSQL本身只有几十MB,即使加上一些ODBC,也不过100-200MB,这个体积要比ORACLE可要小的多。使用一张U盘就可以携带。这个看似没有优势,但是假设这样一种场景,你就会觉得优势出来了。我们假设在A主机安装了MYSQL数据库,因为一些原因,需要迁移到B主机上。B主机上还没有装数据库,而且是台远程主机,那么想一想体积小巧是不是迁移起来很方便呢?

C、开源软件。相比MS SQL和ORACLE,MYSQL这么受欢迎就是因为开源。我知道很多技术人本身从来也不关注产品成本或者说是二次开发、使用成本。开源虽然不等于免费,但是开源的软件总是带来以上的低成本。你不考虑是因为你没有上升到需要考虑这个问题的时候,如果你是一个CIO或者是运营总监之类,我相信你是会考虑的.

D. 跨平台。比如MS(微软的)SQL SERVER。MYSQL可以在很多操作系统下安装运行。除了流行的WINDOWS和LINUX,甚至还可以在一些FREE BSD等其它操作系统下安装运行。

E.支持多种编程语言。C++ 、JAVA、PHP等多种编程语言都有数据库驱动接口,可以开发MYSQL数据库。

2、MYSQL基于C/S通信模式。像MS SQL,ORACLE和MYSQL都是基于C/S的模式。这种模式和其它的C/S模式一样便于通过网络来访问数据库。需要值得新手注意的是一般情况下mysql说的是基于mysql自带的客户端管理工具,而大写的MYSQL才是服务器端数据库程序。在LINUX下一般叫做mysqld。服务器端没有人机界面,需要通过客户端连接到服务器端去管理、操作数据库。

3.关于MYSQL与MS SQL的比较

面是 MySQL 开发小组自己写的比较文章:MySQL 与 mSQL (MS SQL)的比较
因为没有线程创建开销、一个较小的语法分析器、较少功能和简单的安全性,mSQL应该在下列方面更快些:

  1. 执行重复的连接和断开的测试,在每个连接期间运行一个非常简单的查询。
  2. 有很少的列和键的插入很简单的表的INSERT操作。
  3. CREATE TABLE和DROP TABLE。
  4. 在不是一个索引的一些东西上SELECT。(一个表扫描是很容易的。)


因为这些操作是如此简单,当你有更高的启动开销时,很难在这些方面变得更好。在连接被建立以后,MySQL应该性能好一些。在另一方面,MySQL比mSQL(以及大多数其他的SQL实现)在下列方面更好些
 

  1. 复杂的SELECT操作。
  2. 检索较大的结果(MySQL有一个更好、更快并且更安全的协议)。
  3. 有变长字符串的表,因为MySQL有更有效的并可在VARCHAR列上索引。
  4. 有很多列的表的处理。
  5. 由长记录的表的处理。
  6. 有很多许多表达式的SELECT。
  7. 在大表上的SELECT。
  8. 同时处理很多连接。MySQL充分是完全多线程化的,每个连接有它自己的线程,这意味着没有线程必须等待另一个线程(除非一个线程正在修改一张表,另外的线程想要存取)在mSQL中,一旦一个连接被建立了,所有其它线程必须等到第一个线程完成,不管连接正在运行的查询是短的或是长的。当第一个连接终止时,下一个才能工作,而此时所有其它线程再次等待,等等。
  9. 联结。如果你改变一个SELECT中的表的顺序,mSQL可能变得异常地慢。在基准套件中,比MySQL要慢超过15000倍的时间。这是由于mSQL缺乏一个联结优化器以便以最佳的顺序排定表。然而,如果你把表按完全正确的顺序放在mSQL2中并且WHERE是很简单的并使用索引列,联结将相对快些!见10.8 使用你自己的基准。
  10. ORDER BY和GROUP BY。
  11. DISTINCT。
  12. 使用TEXT或BLOB列


 

三、为什么要学MYSQL

我个人认为这是我骗文章着重要强调的,也是一般的文章不会提到的。学习是通过需求来决定的,盲目的学习其实收获不大。尽管MYSQL是一款数据库关系系统产品,但是做为能动性的人,你的工作性质决定了你要学习的内容。我给它分了三个层次,与其说是层次不如准确点说是三个方向。

1、程序开发人员。程序开发人员需要通过对MYSQL的学习要达到利用MYSQL去创造出一款基于MYSQL的数据库。所以程序人员的重点是如何创建一个自己需要的MYSQL数据库。除了自己编程的知识,数据结构的知识,SQL语句的熟练至精通的掌握程度,他们只需要创造出适合他们的MYSQL数据库就够了。所以它们并不是特别关注MYSQL的搭建,MYSQL的管理,甚至是基于MYSQL的优化(它们一般更多的关注的是优化数据库本身,而不是MYSQL数据库系统)

2、数据库管理员。与程序开发人员不同的是,数据库管理员需要熟练掌握MYSQL的搭建(特别是在不同OS下,数据库的日常管理。数据库的权限管理,包括更深入的数据库系统的优化工作。资深的数据库管理人员可以与系统架构人员一同探讨如何搭建一个让自己满意而相对完美的数据库系统环境。

3、系统管理员、系统架构师。在没有专职的数据库管理员得企业,系统管理员要承担数据库管理员的大部分角色。即使有了数据库管理员,系统架构师得级别可能要针对整个系统的优化,比如基于LAMP,那么除了要熟练甚至精通MYSQL,还必须熟悉LINUX,APACHE,和PHP等产品。找出它们之间的瓶颈,从而改良架构。

本系列的文章内容主要倾向于后2个方向。

四、推荐学习MYSQL书籍

关于MYSQL的图书很多。不过学习者一定要根据自己的需求来购买。按照我上面分类的三个方向进行选书。基本上图书有一部分是针对开发人员的,有一部分是针对数据库管理员的。但是从我读过的有限的几本来看,没有一本是完美针对某个方向的,只是在章节和内容上更倾向哪个方向。




本文转自 z00w00 51CTO博客,原文链接:http://blog.51cto.com/z00w00/556983,如需转载请自行联系原作者

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
4月前
|
关系型数据库 MySQL 分布式数据库
PolarDB MySQL版并行查询技术探索与实践
PolarDB MySQL版并行查询技术探索与实践 PolarDB MySQL版在企业级查询加速特性上进行了深度技术探索,其中并行查询作为其重要组成部分,已经在线稳定运行多年,持续演进。本文将详细介绍并行查询的背景、挑战、方案、特性以及实践。
107 2
|
6月前
|
存储 算法 关系型数据库
【MySQL的CheckPoint技术】
【MySQL的CheckPoint技术】
|
17天前
|
SQL 关系型数据库 MySQL
【MySQL技术专题】「问题实战系列」深入探索和分析MySQL数据库的数据备份和恢复实战开发指南(8.0版本升级篇)
【MySQL技术专题】「问题实战系列」深入探索和分析MySQL数据库的数据备份和恢复实战开发指南(8.0版本升级篇)
83 0
|
4月前
|
SQL 分布式计算 数据库
【大数据技术Spark】Spark SQL操作Dataframe、读写MySQL、Hive数据库实战(附源码)
【大数据技术Spark】Spark SQL操作Dataframe、读写MySQL、Hive数据库实战(附源码)
82 0
|
17天前
|
canal 消息中间件 关系型数据库
【分布式技术专题】「分布式技术架构」MySQL数据同步到Elasticsearch之N种方案解析,实现高效数据同步
【分布式技术专题】「分布式技术架构」MySQL数据同步到Elasticsearch之N种方案解析,实现高效数据同步
64 0
|
17天前
|
SQL 关系型数据库 MySQL
【MySQL技术专题】「问题实战系列」深入探索和分析MySQL数据库的数据备份和恢复实战开发指南(数据恢复补充篇)(一)
【MySQL技术专题】「问题实战系列」深入探索和分析MySQL数据库的数据备份和恢复实战开发指南(数据恢复补充篇)
29 0
|
17天前
|
SQL 关系型数据库 MySQL
【MySQL技术之旅】(7)总结和盘点优化方案系列之常用SQL的优化
【MySQL技术之旅】(7)总结和盘点优化方案系列之常用SQL的优化
35 1
|
3月前
|
SQL 关系型数据库 MySQL
Mysql高可用,索引,事务与调优:提高数据库性能的关键技术
在当今互联网时代,高可用性、稳定性和性能是数据库的三大关键要素。本文将深入探讨Mysql高可用、索引、事务和调优等方面的技术,为读者提供实用的解决方案和经验。
24 0
|
3月前
|
存储 关系型数据库 MySQL
MySQL中的WAL技术
MySQL中的WAL技术
|
3月前
|
人工智能 关系型数据库 MySQL
一键实现穿衣自由|揭秘淘宝AI试衣间硬核技术:AnalyticDB MySQL向量在线召回
在AI试衣间功能的背后,阿里云瑶池旗下的云原生数据仓库AnalyticDB MySQL提供了高维向量低延时的在线向量召回检索服务,下面将进行介绍。