MYSQL技术连环斩-MYSQL简述

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云原生数据库 PolarDB MySQL 版,通用型 2核8GB 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,如需转载请自行联系原作者

相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
打赏
0
0
0
0
263
分享
相关文章
10亿数据如何最快速插入MySQL:技术干货分享
【8月更文挑战第2天】在大数据时代,处理并快速插入数十亿条数据到MySQL数据库是许多企业面临的关键挑战。本文将深入分享一系列高效的技术策略和实战经验,帮助读者优化这一过程,确保数据能够快速、准确地进入数据库系统。
253 1
java版药品不良反应智能监测系统源码,采用SpringBoot、Vue、MySQL技术开发
基于B/S架构,采用Java、SpringBoot、Vue、MySQL等技术自主研发的ADR智能监测系统,适用于三甲医院,支持二次开发。该系统能自动监测全院患者药物不良反应,通过移动端和PC端实时反馈,提升用药安全。系统涵盖规则管理、监测报告、系统管理三大模块,确保精准、高效地处理ADR事件。
【技术开发】接口管理平台要用什么技术栈?推荐:Java+Vue3+Docker+MySQL
该文档介绍了基于Java后端和Vue3前端构建的管理系统的技术栈及功能模块,涵盖管理后台的访问、登录、首页概览、API接口管理、接口权限设置、接口监控、计费管理、账号管理、应用管理、数据库配置、站点配置及管理员个人设置等内容,并提供了访问地址及操作指南。
MySQL自增ID耗尽应对策略:技术解决方案全解析
在数据库管理中,MySQL的自增ID(AUTO_INCREMENT)属性为表中的每一行提供了一个唯一的标识符。然而,当自增ID达到其最大值时,如何处理这一情况成为了数据库管理员和开发者必须面对的问题。本文将探讨MySQL自增ID耗尽的原因、影响以及有效的应对策略。
212 3
MySQL 导出某些数据的技术详解
MySQL 导出某些数据的技术详解
213 2
技术解析:MySQL中取最新一条重复数据的方法
以上提供的两种方法都可以有效地从MySQL数据库中提取每个类别最新的重复数据。选择哪种方法取决于具体的使用场景和MySQL版本。子查询加分组的方法兼容性更好,适用于所有版本的MySQL;而窗口函数方法代码更简洁,执行效率可能更高,但需要MySQL 8.0及以上版本。在实际应用中,应根据数据量大小、查询性能需求以及MySQL版本等因素综合考虑,选择最合适的实现方案。
516 6
MySQL技术深度解析:每次最大插入条数探秘
MySQL技术深度解析:每次最大插入条数探秘
79 0
MySQL技术指南:如何更改数据字段的前几位数字
MySQL技术指南:如何更改数据字段的前几位数字
89 0
MySQL数据实时同步到Elasticsearch:技术深度解析与实践分享
在当今的数据驱动时代,实时数据同步成为许多应用系统的核心需求之一。MySQL作为关系型数据库的代表,以其强大的事务处理能力和数据完整性保障,广泛应用于各种业务场景中。然而,随着数据量的增长和查询复杂度的提升,单一依赖MySQL进行高效的数据检索和分析变得日益困难。这时,Elasticsearch(简称ES)以其卓越的搜索性能、灵活的数据模式以及强大的可扩展性,成为处理复杂查询需求的理想选择。本文将深入探讨MySQL数据实时同步到Elasticsearch的技术实现与最佳实践。
275 0
mysql加索引真的会锁表吗?揭秘背后的技术细节与规避策略
【8月更文挑战第16天】在数据库管理中,添加索引能大幅提升查询效率。MySQL执行此操作时的锁定行为常引起关注。文章详细解析MySQL中索引添加时的锁定机制及其原理。不同存储引擎及SQL语句影响锁定策略:MyISAM需全表锁定;InnoDB提供更灵活选项,如使用`ALTER TABLE... LOCK=NONE`可在加索引时允许读写访问,尽管可能延长索引构建时间。自MySQL 5.6起,在线DDL技术可进一步减少锁定时间,通过`ALGORITHM=INPLACE`和`LOCK=NONE`实现近乎无锁的表结构变更。合理配置这些选项有助于最小化对业务的影响并保持数据库高效运行。
684 4

热门文章

最新文章