分类:MySQL

来自Wikioe
Eijux讨论 | 贡献2021年4月27日 (二) 10:36的版本 →‎想要分库分表
跳到导航 跳到搜索
MySQL笔记本

笔记目录及相关

MySQL 是最流行的关系型数据库管理系统,在 WEB 应用方面 MySQL 是最好的 RDBMS(Relational Database Management System:关系数据库管理系统)应用软件之一。


学习MySQL:

  1. 做业务,要懂基本的SQL语句;
  2. 做性能优化,要懂索引,懂引擎;
  3. 做分库分表,要懂主从,懂读写分离...



想要了解MySQL

关于MySQL社区及企业版

MySQL各个版本区别:

  1. MySQL Community Server 社区版本,开源免费,但不提供官方技术支持。
  2. MySQL Enterprise Edition 企业版本,需付费,可以试用30天。
  3. MySQL Cluster 集群版,开源免费。可将几个MySQL Server封装成一个Server。
  4. MySQL Cluster CGE 高级集群版,需付费。

关于MySQL大版本5.7与8

语法上区别不大,但是在一些特性上有较大升级,如:数据库引擎、加密方法、数据库特性等。

关于在Linux上使用MySQL

对于在 Linux/UNIX 上使用 MySQL:
Linux平台上推荐使用RPM包来安装Mysql,MySQL AB提供了以下RPM包的下载地址:

  1. MySQL:MySQL服务器。你需要该选项,除非你只想连接运行在另一台机器上的MySQL服务器。
  2. MySQL-client:MySQL 客户端程序,用于连接并操作Mysql服务器。
  3. MySQL-devel:库和包含文件,如果你想要编译其它MySQL客户端,例如Perl模块,则需要安装该RPM包。
  4. MySQL-shared:该软件包包含某些语言和应用程序需要动态装载的共享库(libmysqlclient.so*),使用MySQL。
  5. MySQL-bench:MySQL数据库服务器的基准和性能测试工具。

关于MySQL的错误信息

任何程序软件的使用过程中,错误信息的收集使用都是不可或缺的一环,见“MySQL的错误记录

mysqld 与 mysql

  1. mysqld:是后台服务程序,即mysql服务器,是一个服务。(其中的“d”为“daemon”意“守护进程”)
  2. mysql:是一个交互式输入sql语句或从sql文件批处理它们的一个命令行工具,相当于一个客户端软件,可以对服务端mysqld发起连接。

想要做业务

字符集,排序规则 和 Unicode

MySQL 提供了字符集支持,使您可以使用各种字符集存储数据并根据各种归类进行比较。默认的 MySQL 服务器字符集和排序规则是“latin1”和“latin1_swedish_ci”,但是您可以在服务器,数据库,表,列和字符串常量级别指定字符集。

字符集问题不仅影响数据存储,还影响 Client 端程序与 MySQL 服务器之间的通信。如果希望 Client 端程序使用与默认字符集不同的字符集与服务器通信,则需要指出哪个字符集。
例如,要使用 utf8 Unicode 字符集,请在连接到服务器后发出以下语句:
    SET NAMES 'utf8';

字符集(Character Set)是一组符号和编码。排序规则(Collation)是一组用于比较字符集中的字符的规则。


MySQL 对字符集、排序规则的支持:

  1. 使用各种字符集存储字符串。
  2. 使用各种排序规则比较字符串。
  3. 在同一服务器,同一数据库甚至同一表中混合使用具有不同字符集或排序规则的字符串。
  4. 在任何级别启用字符集和排序规则的规范。

关于“数据类型”

MySQL 支持以下几种类别的SQL数据类型:数字类型,日期和时间类型,字符串(字符和字节)类型,空间类型和JSON数据类型。

数据类型描述使用以下约定:

  1. 对于整数类型,“M”表示最大显示宽度。对于浮点和定点类型,“M”是可以存储的总位数(精度)。对于字符串类型,“M”是最大长度。“M”的最大允许值取决于数据类型。
  2. D”适用于浮点和定点类型,并表示小数点后的位数(小数位数)。可能的最大值为 30,但不应大于“M-2”。
  3. fsp”适用于TIME,DATETIME和TIMESTAMP类型,并表示小数秒精度;也就是说,小数点后的位数是秒的小数部分。“fsp”的值(如果给定)必须在 0 到 6 的范围内。值 0 表示没有小数部分。如果省略,则默认精度为 0。【这与标准 SQL 的默认值 6 不同,以便与以前的 MySQL 版本兼容】
  4. 方括号“[”和“]”指示类型定义的可选部分。

函数和运算符

可以在SQL语句中的多个点使用表达式,例如“SELECT”语句的“ORDER BY”或“HAVING”子句;“SELECT”,“DELETE”或“UPDATE”语句的“WHERE”子句或“SET”语句。可以使用字符值,列值,NULL,内置函数,存储函数,用户定义的函数和运算符来编写表达式。

SQL 语句

想要了解存储引擎

InnoDB

InnoDB 是通用存储引擎,可兼顾高可靠性和高性能。在 MySQL 5.7 中,InnoDB 是默认的 MySQL 存储引擎。除非您配置了其他默认存储引擎,否则发出不带“ENGINE=”子句的 CREATE TABLE 语句将创建 InnoDB 表。

MyISAM

想要做优化

数据库优化涉及多个级别的配置,调整和测量性能:

根据工作角色不同(开发人员,DBA 或两者的组合),可以在“单个 SQL 语句”,“整个应用程序”,“单个数据库服务器”或“多个网络数据库服务器”的级别进行优化。


有时,您可以主动并提前计划性能,而有时,您可能会在问题发生后对配置或代码问题进行故障排除。优化 CPU 和内存使用率也可以提高可伸缩性,从而使数据库能够处理更多负载而不会降低速度。

想要分库分表

关于“集群”

关于“”

其他