MySQL DNS的使用过程详细分析_Mysql

当 mysql 客户端连接 mysql 服务器 (进程为:mysqld),mysqld 会创建一个新的线程来处理该请求。该线程先检查是否主机名在主机名缓存中。如果不在,线程试图解析主机名。
如果系统是线程安全的,则 gethostbyaddr_r () 和 gethostbyname_r() 被调用,来执行主机名解析;
如果系统不支持线程安全调用,则线程会锁定一个互斥体并调用 gethostbyaddr() 和 gethostbyname() 。在这种情况下,在第1个线程解锁互斥体前,没有其它线程可以解析不在主机名缓存中的主机名。
通过 --skip-name-resolve 选项启动 mysqld 来禁用DNS主机名查找。此时,只可以使用 MySQL 授权表中的 IP 地址,不能使用主机名。
如果 DNS 解析很慢且包括许多主机,通过用--skip-name-resolve 禁用DNS查找或增加HOST_CACHE_SIZE定义(默认值:128)并重新编译mysqld来提高性能;
通过 --skip-host-cache 选项启动服务器来禁用主机名缓存。要想清除主机名缓存,执行 FLUSH HOSTS 语句或执行 mysqladmin flush-hosts 命令。
如果要完全禁止 TCP/IP 连接,用 --skip-networking 选项启动 mysqld 。

时间: 2025-01-29 08:14:31

MySQL DNS的使用过程详细分析_Mysql的相关文章

MySQL索引优化的实际案例分析_Mysql

Order by desc/asc limit M是我在mysql sql优化中经常遇到的一种场景,其优化原理也非常的简单,就是利用索引的有序性,优化器沿着索引的顺序扫描,在扫描到符合条件的M行数据后,停止扫描:看起来非常的简单,但是我经常看到很多性能较差的sql没有利用这个优化规律,下面将结合一些实际的案例来分析说明: 案例一: 一条sql执行非常的慢,执行时间为: root@test 02:00:44 SELECT * FROM test_order_desc WHERE END_TIME>

MySQL下的RAND()优化案例分析_Mysql

众所周知,在MySQL中,如果直接 ORDER BY RAND() 的话,效率非常差,因为会多次执行.事实上,如果等值查询也是用 RAND() 的话也如此,我们先来看看下面这几个SQL的不同执行计划和执行耗时. 首先,看下建表DDL,这是一个没有显式自增主键的InnoDB表: [yejr@imysql]> show create table t_innodb_random\G *************************** 1. row *************************

Hive map阶段缓慢,优化过程详细分析

背景 同事写了这样一段HQL(涉及公司数据,表名由假名替换,语句与真实场景略有不同,但不影响分析): CREATE TABLE tmp AS  SELECT         t1.exk,         t1.exv,         M.makename AS m_makename,         S.makename AS s_makename,  FROM    (SELECT            exk,            exv     FROM xx.xxx_log    

MySQL Antelope和Barracuda的区别分析_Mysql

Antelope是innodb-base的文件格式,Barracude是innodb-plugin后引入的文件格式,同时Barracude也支持Antelope文件格式.两者区别在于: 文件格式 支持行格式 特性 Antelope (Innodb-base) ROW_FORMAT=COMPACT ROW_FORMAT=REDUNDANT Compact和redumdant的区别在就是在于首部的存存内容区别. compact的存储格式为首部为一个非NULL的变长字段长度列表 redundant的存

mysql安全启动脚本mysqld_safe详细介绍_Mysql

在Unix和NetWare中推荐使用mysqld_safe来启动mysqld服务器.mysqld_safe增加了一些安全特性,例如当出现错误时重启服务器并向错误日志文件写入运行时间信息.本节后面列出了NetWare的特定行为. 注释:为了保持同旧版本MySQL的向后兼容性,MySQL二进制分发版仍然包括safe_mysqld作为mysqld_safe的符号链接.但是,你不应再依赖它,因为再将来将删掉它. 默认情况下,mysqld_safe尝试启动可执行mysqld-max(如果存在),否则启动m

基于MySQL数据库复制Master-Slave架构的分析_Mysql

为了应用系统的可伸缩性,往往需要对数据库进行scale out设计,scale out设计也就是通过增加数据库处理节点来提高系统整体的处理能力,即增加数据库服务器的数量来分担压力.通过这种方式系统的伸缩性增强了,成本也降低了,但是系统的架构复杂了,维护困难了.难免出现系统的宕机或故障.因此,理论上来说,系统的安全性(可能数据丢失)降低了,可用性也降低了.那么要提高数据安全性,以及系统的高可用性,很简单的办法就是所有软硬件都避免单点隐患,所有数据都保存多份.从技术上来说,就可以通过数据库复制技术实

Windows mysql 双向同步设置方法 详细篇_Mysql

1.1         环境搭建 准备两台Windows NT 主机,分别安装好iKEY Server windows 版本,确定版本无误,确保mysql服务正常启动,确保两台主机处于同一个局域网中,确定好哪台做为主.备机器,假设A为主机,B为备机,假设A主机IP地址为:192.168.1.101,B主机IP地址为192.168.1.102 1.2         创建同步帐户 分别在A.B节点上登陆mysql 数据库,创建同步帐户并赋予同步权限,如下: A节点操作: 运行cmd, cd进入iK

mysql配置模板(my-*.cnf)参数详细说明_Mysql

mysql安装成功后有几个默认的配置模板,列表如下:my-huge.cnf : 用于高端产品服务器,包括1到2GB RAM,主要运行mysqlmy-innodb-heavy-4G.ini : 用于只有innodb的安装,最多有4GB RAM,支持大的查询和低流量my-large.cnf : 用于中等规模的产品服务器,包括大约512M RAMmy-medium.cnf : 用于低端产品服务器,包括很少内存(少于128M)my-small.cnf : 用于最低设备的服务器,只有一点内存(少于512M

MySQL对数据库数据进行复制的基本过程详解_Mysql

复制      复制是从一个MySQL服务器(master)将数据拷贝到另外一台或多台MySQL服务器(slaves)的过程.复制是异步进行的--slaves服务器不需要持续地保持连接来接收master的数据.依据配置的不同,可以复制所有数据库,或指定的数据库,甚至是某一数据库指定的表.      使用复制功能的目的在于: 向外扩展的解决方案 -- 通过在多台服务器之间分散负载来提高性能.在这种环境下,所有写和更新操作都在master服务器上进行,而读操作则发生在一台或多台slaves服务器上.