mysql从零开始学习(初识mysql)


以下内容都是我跟着《mysql是怎么样运行的》这本书,一边学习一边抄录的内容。单纯的只是为了学习、巩固自己的知识点。当前为第一章到第三章到内容

参数及含义

  • 像h、u、p这种名称只有一个英文字母的参数成为短形式的参数,使用时前面需要加单短划线;像host、user、password这种有多个字母组成的参数成为长形式的参数,使用时前面需要加双短划线。

-h : --host= 主机名

-u : --user= 用户名

-p : – password= 密码

-P 明确指定端口号

连接管理

  • 每当有一个客户端进程连接到服务器进程时,服务器进程都会创建一个线程专门处理与客户端到交互;当该客户端退出时会与服务器断开连接,服务器并不会立即把与该客户端交互的线程销毁,而是把它缓存起,在另一个新的客户端再进行连接时,把这个缓存的线程分配给该新客户端。这样就不用频繁地创建和销毁线程,从而节省了开销。
  • 从mysql5.7.20开始,不推荐使用查询缓存,在mysql8.0中直接将其删除。
  • InnoDB从mysql5.5.5版本开始作为mysql的默认存储引擎,之前版本的默认存储引擎为MyISAM。
  • InnoDB 支持事物处理,分布式事务,事务的部分回滚。

字符集和比较规则

  • utfmb3:“阉割”过的UTF-8字符集,使用1-3字表示字符
  • utfmb4:正宗的UTF-8字符集,使用1-4字表示字符;可以存储emoji表情
  • mysql中,utf8 时utf8mb3的别名。
  • mysql8.0中,设计mysql的大叔已经很大程度地优化了utf8mb4 字符集的性能,而且已经将其设置为默认的字符集。
系统变量 描述
character_set_server 服务器级别的字符集
collation_server 服务器级别的比较规则
character_set_database 当前数据库的字符集(用来读取的)
collation_database 当前数据库的比较规则(用来读取的)
character_set_client 服务器认为请求是按照该系统变量指定的字符集进行编码的
character_set_connection 服务器在处理请求时,会把请求字节序列从character_set_client转换为character_set_connection
character_set_results 服务器采用该系统变量指定的字符集对返回给客户端的字符串进行编码

从发送请求到响应的过程中发生的字符集转换如下:

  1. 客户端发送的请求字节序列是采用哪种字符集进行编码的?

    这一步骤主要取决于操作系统当前使用的字符集;对Windows操作系统来说,还与客户端启动时设置的default-character-set启动项有关。
    
  2. 服务器接收到请求字节序列后会认为它是采用哪种字符集进行编码的?

    这一步骤主要取决于系统变量character_set_client的值。
    
  3. 服务器在运行过程中会把请求的字节序列转换为以哪种字符集编码的字节序列?

    这一步骤主要取决于系统变量character_set_connection的值。
    
  4. 服务器在向客户端返回字节序列时,是采用哪种字符集进行编码的?

    这一步骤主要取决于系统变量character_set_results的值。
    
  5. 客户端在收到响应字节序列后,是怎么把它们写到黑框框中的?

    这一步骤主要取决于操作系统当前使用的字符集;对于Windows操作系统来说,还与客户端启动时设置的default—character-set启动项有关。
    

猜你喜欢

转载自blog.csdn.net/weixin_41317840/article/details/128972256