一、数据库和实例
数据库:是文件的集合(一般老说是二进制文件,frm,MYD,MYI ibd为后缀),依靠某种数据模型存放在二级存储器中的数据集合;
数据库实例:后台线程一级一个共享内存区组成。是程序,是位于用户和OS之间的一层数据管理软件,用户对数据库数据的任何操作,包括数据库定义,数据查询,数据维护,数据运行控制都在数据库实例下进行的,应用程序只有通过数据库实例才和数据库打交道;
mysql数据库实例在系统上的表现就是一个进程。
二、mysql的组成部分
连接池:
管理服务和工具组件:
SQL接口组件:
查询优化器
缓冲组件
插入式存储引擎
物理文件
储存引擎是基于表的,而不是数据库。
三、常见的数据库引擎
InnoDB设计的主要目标就是基于在线处理事务,行锁,外键,默认读操作不会产生锁;MVCC提高并发;
next-key-locking避免幻读;
插入缓冲、二次写、自适应哈希,预读提高性能和可用性。
MyISAM:缓冲池只缓存索引文件,不缓存数据文件,存储引擎表有MYD(数据文件)和MYI(索引文件);压缩数据文件,Huffman编码算法;
Memory:默认使用哈希索引,仅支持表锁 并发差,mysql的临时表使用Memory引擎存放中间结果集;如果中间结果集大于Memory的存储容量或者含有blog和text类型,会转化成MyISAM存放在磁盘中。
Archive:使用zlib算法将数据行进行压缩后存储,压缩比可达1:10,适合用于存储归档数据,日志信息。行锁实现高并发插入
四、连接MySQL
mysql连接操作是一个连接进程和mysql数据实例进行通信;本质是进程间的通信。(进程通信方式:管道 命名管道、TCP/IP、UNIX域套接字)
TCP\IP:mysql -h host -u user -p 这种方式MySQL会先检测一个权限视图,以及请求端IP;
UNIX域套接字:
show variables like 'socket';
获取到 socket套接字的文件路径;然后通过套接字文件连接:mysql -uuser -S '套接字文件路径';
参考资料:
《MySQL技术引擎内幕InnoDB存储引擎》 第二版 ---机械工业出版社