1.TCP/IP local,remote all
2.Unix soket file local only unix only
3.named pipe local only windows only
4. shared memory local only windows only
TCP/IP连接被支持有任何Mysql除非--skip-network选项
unix socket文件连接有unix servers支持
name-pipe连接被支持在windows和如果服务器有-nt. --enable-named-pipe
shared-memory连接使用--shared-memory选项
在很多windows系统配置中,通过named pipes是比使用TCP/ip慢的多,当TCP/ip不可以使用时使用named pipes
在unix,一个unix socket文件连接提供了更好的性能逼着TCP/ip连接
在任何平台,一个ODBC连接通过是不直接使用native c client库慢的
在任何平台,使用JDBC连接通过Mysql/J 是可能和使用native C客户端库同样的速度
23.3 这SQL解析和存储引擎
使用两层处理模型来执行每个语句:
1.这上层包含SQL 解析和优化器。服务器处理每个语句来看是那种请求,然后使用优化器来决定执行这语句效率怎样。然和,这层并不是和表直接通信
2.这底层是一套存储引擎。服务器使用一个中间架构:每个存储引擎是一个软件模块被使用来管理一种特定类型表。存储引擎和一个表直接管理获取他来存储和获取数据。
1.创建表有一个ENGINE选项能够使你指定存储引擎来使用在一个表。alter 表有一个ENGINE选项来使你转换一个表来使用不同的存储引擎
2.一些索引类型对特定的存储有效。例如,仅仅只有myisam引擎支持full-text或spatial索引
3.commit和roolback有效对于表仅仅对于transactional存储如InnoDB有效。
23.4 mysql如何使用磁盘空间
MySQL server有以下方式,服务器的数据目录文件夹。这服务器使用数据目录来存储下面文件:
1.database目录。每个数据库都有一个单独目录在data目录下。
2.table格式文件(.frm文件)包含表结构的描述。每个表都有自己的.frm文件,位于则恰当的数据库目录。
3.数据和索引文件对于每个表被创建有一些存储以前位于恰当的数据库目录。例如,这MyISAM存储以前创建一个数据文件盒一个索引文件对于每个表。
4.InnoDB存储引擎有它自己的表空间和日志文件。
5.服务器日志文件和状态文件。这些文件包含服务器处理语句的信息。日志被用来复制和数据恢复,来获得信息来优化查询性能和来决定师傅操作问题正在发生。
23.5 MySQL如何使用内存
1.Thread handler。这服务器是多线程的,和一个线程是想一个小禁区运行在服务器内部。对于每个客户端的连接,服务器分配一个线程给它来管理连接。对于性能原因,服务器使用集中buffer来管理信息在内存出于避免磁盘访问的目的:
1.赋予table缓存。
2.对于MyISAM表一个关键缓存保存有索引块。来缓存索引块在内存中,服务器总是避免读取索引内容从磁盘为了基于所以回去和其他关于索引操作如排序
3.表索引保存有开放表的描述符。
4.服务器支持一个查询缓存来加速处理查询被重复访问。
5.这主机持有主机解析查找的结果。这些结果被缓存来减少调用的次数读研主机解析器。
6.这Innodb存储引擎日志信息关于transaction在内存缓存。当一个transcation提交,这日志环被刷新到InnoDB日志文件,提供在磁盘的记录能够被用来重新提交任务如果它被丢失由于一个crash。如果transaction回滚,这刷新到磁盘不需要重新做。
7.这Memory存储引擎创建表在内存中。这些表时非常快因为没有磁盘和内存的交互来获得他们的内容
8.这服务器肯能创建内部临时表在内存中在访问处理期间。如果表的尺寸超过tmp_table_size系统变量,服务器转化它为MyISAM-format表在磁盘和增加Created_tmp_disk_tables状态变量。
9.服务器维护几种缓存对于每个客户端连接。
几种SHOW语句能够使你检测几种内存先关参数。SHOW VARIVABLES展示服务器系统变量以至于你能偶看到服务器怎样配置。SHOW STATUS展示系统状态变量。这状态指示器能够使你检测缓存的运行状态,能够用来判断是否你使用更大的缓存是更好地。