MySQL特性及架构
一、MySQL数据库特性 1. 内部构件和可移植性 使用C和C++编写,保证了源代码的可移植性。 支持多种平台。 提供众多编程语言的API接口。 采用核心线程和完全多线程(使用多CPU)。 提供事务性和非事务性存储引擎。 使用极快的”B树”磁盘表和索引压缩。 极快的基于线程的内存分配系统。 提供TCP/IP、ODBC和JDBC等多种数据库连接途径。 存储器中……
找出MySQL服务器发生SWAP的原因?
首先,讲一下MySQL的内存消耗分为: 会话级别的内存消耗:如 sort_buffer_size 等,每个会话都会开辟一个 sort_buffer_size 来进行排序操作。 全局的内存消耗:例如 innodb_buffer_pool_size 等,全局共享的内存段。 关于会话级的内存消耗解释如下: read_buffer_size,sort_buffe……
MySQL为什么要关闭Query Cache?
当你的数据库打开了Query Cache(简称QC)功能后,数据库在执行SELECT语句时,会将其结果放到QC中,当下一次处理同样的SELECT请求时,数据库就会从QC取得结果,而不需要去数据表中查询。 在这个”Cache为王”的时代,我们总是通过不同的方式去缓存我们的结果从而提高响应效率,但一个缓存机制是否有效,效果如何,却是一……
FLUSH TABLES WITH READ LOCK
一、FTWRL FLUSH TABLES WITH READ LOCK(FTWRL),该命令属于 MySQL Server 命令,多用于备份的时候对全局表进行锁定来获取 binlog 信息。虽然持有时间很短,但容易被大操作堵塞造成备份不能完成。由于 FTWRL 总共需要持有两把全局的 MDL(Metadata Data Lock)锁,并且还需要关闭所有表对象……
MySQL最优配置模板( 5.6&5.7)
MySQL 5.6&5.7配置文件(姜总提供) [mysql] default-character-set=utf8mb4 user = root password = 123456 port = 3306 socket = /tmp/mysqld.sock prompt="\u@\h \d>" ……
MySQL主库 crash-safe 与 binlog 关系?
一、什么是CrashSafe? CrashSafe指MySQL服务器宕机重启后,能够保证: – 所有已经提交的事务的数据仍然存在。 – 所有没有提交的事务的数据自动回滚。 Innodb通过Redo Log和Undo Log可以保证以上两点。为了保证严格的CrashSafe,必须要在每个事务提交的时候,将Redo Log写入硬件存储。这……
MySQL基于SSL复制的配置过程
MySQL的主从复制默认是明文传送的,如果在生产环境中跨网络传送,数据的安全性就无法完全保证,为了解决这一问题,我们需要一种安全的方式进行传送,即基于SSL加密进行数据传输。在进行SSL加密传输时可能需要先了解CA、证书及SSL相关知识才能更好地明白为何基于SSL的传输就会更加安全。CA、证书及SSL相关知识在本章节不会多加一说明,详情可以看本博客提供的“信……
为什么需要修改MySQL参数ft_min_word_len?
为什么要修改MySQL的ft_min_word_len? 从MySQL 4.0开始就支持全文索引功能,但是 MySQL 默认的最小索引长度是 4,如下: mysql> show variables like 'ft_min_word_len'; +-----------------+-------+ | Variabl……
MySQL设置gtid_purged破坏AUTO_POSITION复制协议
BUG描述 MySQL 5.6.22中有这样一个关于GTID的bugfix,在主备场景下,如果我们在主库上 SET GLOBAL GTID_PURGED = “some_gtid_set”,并且 some_gtid_set 中包含了备库还没复制的事务,这个时候如果备库接上主库的话,预期结果是主库返回错误,IO线程挂掉的,但是实际上,在……
MySQL主从复制过滤规则应用
一、MySQL主从复制过滤 库级过滤 在评估复制选项时,从服务器首先检查是否存在可应用的复制选项replicate-do-db或 replicate-ignore-db。当使用binlog-do-db或 binlog-ignore-db过程相似,但它们属于在主库上检查选项。 主库支持的过滤选项 # 仅将指定库的相关修改操作记……
MySQL表字段字符集不同导致的索引失效问题
1. 概述 昨天在一位同学的MySQL机器上面发现了这样一个问题,MySQL两张表做left join时,执行计划里面显示有一张表使用了全表扫描,扫描全表近100万行记录,大并发的这样的SQL过来数据库变得几乎不可用了,今天和大家一起分享下这个问题的原因及解决办法,希望可以帮助大家更好的学习MySQL数据库,一起来看看吧。MySQL版本为官方5.7.12。 ……