mysql知识梳理(MySQL技术内幕读书笔记)

showengines\G; mysql-h192.168.0.101-uroot-p ,今天小编就来聊一聊关于mysql知识梳理?接下来我们就一起去研究一下吧!

mysql知识梳理(MySQL技术内幕读书笔记)

mysql知识梳理

2. MyISAM存储引擎
  1. MyISAM存储引擎不支持事务、锁表设计,支持全文索引,主要面向一些OLAP数据库应用。
  2. MySQL5.5.8之前默认存储引擎是MyISAM(Windows版本除外)。
  3. MyISAM存储引擎的缓冲池只缓存索引文件,而不缓存数据文件。这点和大多数数据库都不同。
  4. MyISAM存储引擎表由MYD和MYI组成,MYD用来存放数据文件,MYI用来存放索引文件。
  5. MySQL5.0之前MyISAM默认支持的表大小是4G,如果需要更大的MyISAM表的话,就要制定MAX_ROWS和AVG_ROW_LENGTH属性。从5.0版本开始,MyISAM默认支持256TB的单表数据,这足够一般应用的需求。
  6. MyISAM存储引擎表,Mysql数据库只缓存其索引文件,数据文件的缓存交给操作系统本身完成,这与LRU算法缓存数据的大部分数据库都不同。MySQL 5.1.23之前,缓存索引的缓冲区最大只能设置为4GB,在之后的版本中,64位系统可以支持大于4GB的索引缓冲区。
其他存储引擎
  1. NDB: 一个集群存储引擎。数据全部放在内存中(从MySQL 5.1之后,可以将非索引数据放在磁盘上),所以主键查找速度极快,通过添加NDB数据存储节点,可以线性的提高数据库性能,是高可用、高性能的集群系统。复杂的连接操作网络开销很大,因为NDB的连接操作(JOIN)是在数据库层完成的,而不是在存储引擎层完成的。
  2. Memory: 之前被称为HEAP存储引擎。将表中的数据存放在内存中,如果数据库重启或发生崩溃,表中的数据全部消失。非常适合非常适合存储临时数据。默认使用hash哈希索引,而不是B 树索引。只支持表锁,并法性能差,不支持TEXT、BLOB列类型。存储变长字段varchar是按照定长char方式存储的,因此会浪费空间。MySQL数据库使用Memory存储引擎作为临时表来存放查询的中间结果集,如果中间结果集大于Memory存储引擎表的容量设置,又或者中间结果含有TEXT或BLOB字段,则MySQL会把其转换成MyISAM存储引擎表存放到磁盘中,因为MyISAM不缓存数据文件,所以这时产生的临时表的性能对于查询会有损失。
  3. Archive存储引擎: Archive引擎只支持INSERT和SELECT操作,从MySQL5.1开始支持索引。Archive引擎使用zlib算法将数据行(row)进行压缩后存储,压缩比可达到1:10。正如其名,Archive存储引擎非常适合存储归档数据,如日志信息。通过行锁来实现高并发的插入操作。但是不是事务安全的,目的主要是提供高速的插入和压缩。
  4. Federated存储引擎: Federated存储引擎并不存储数据,他只是指向一台远程MySQL数据库服务器上的表。类似SQL Server的链接服务器和Oracle的透明网关。不同的是,Federated只支持MySQL数据库表,不支持异构数据库表。
  5. Maria存储引擎: Maria当初是为了取代原有的MyISAM而设计的,从而成为MySQL默认存储引擎。支持缓存数据和索引文件,应用了行锁设计,提供了MVCC功能,支持事务和非事务安全的选项,以及更好的BLOB字符类型的处理性能。
其它
  1. 查看当前使用MySQL版本支持的引擎:

showengines\G;

连接MySQL1. TCP/IP

mysql-h192.168.0.101-uroot-p

通过TCP/IP连接到数据库实例的时候,MySQL数据库会先检查一张权限视图,用来判断此请求是否允许连接。该视图在MySQL架构下,表名为user。

usemysql; selecthost,user,passwordfromuser;

2. 命名管道和共享内存

如果在MySQL服务器本机连接,可以通过命名管道,但是需要MySQL数据库在配置文件中启用--enable-named-pipe选项。在MySQL 4.1之后,还提供了共享内存的连接方式,需要在配置文件中添加--shared-memory实现,在连接时,MySQL客户端还需要使用--protocol=memory选项。

3. UNIX域套接字

在Linux/UNIX环境下,可以使用UNIX域套接字。UNIX域套接字并不是一个网络协议,所以只能在MySQL客户端和数据库实例在一台服务器上时使用。用户可以在配置文件中执行套接字文件的路径。如--socket=/tmp/mysql.sock。可以通过命令show variables like 'socket';来查找套接字文件。知道了套接字文件的路径后,就可以通过下面的命令连接了:

mysql-uroot-S/tmp/mysql.sock

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页