MySQL
文章平均质量分 86
yyyiue
这个作者很懒,什么都没留下…
展开
-
如何高效地利用MySQL索引
为实现MySQL的高性能,我们需要在优化索引、优化查询、优化表结构三个方面努力,这三个方面每个都至关重要。 本文主要讨论索引相关。1.要想合理利用索引,我们要考虑如何正确建立索引呢。 (1)在经常做搜索的列上,也就是WHERE子句里经常出现的列,考虑加上索引,加快搜索速度。 (2)唯一标识记录的列,应该加上主键索引,强制该列的唯一性并且加快按主键查找记录的速度。 (3)在作为关联查询的连接列原创 2016-10-19 12:40:38 · 847 阅读 · 0 评论 -
一次MySQL查询的大致过程
如果想尽可能地优化 MySQL的性能,那么必须对 MySQL查询的全过程有个大体上的了解,为后续的优化工作打下基础。第一步:发送查询请求客户端与 MySQL服务器建立 TCP连接后发送一条查询给 MySQL服务器。客户端和 MySQL服务器之间的通信协议(应用层协议)是“半双工”的,因此,同一个时刻,只能有一方在发送数据,同时,另一方要么完整地接受数据,要么粗暴地断开连接。第二步:检查查询缓存MyS原创 2016-11-23 18:33:55 · 2172 阅读 · 0 评论 -
MySQL 基于日志点复制
MySQL的复制功能不仅可以构建高性能的应用,也是高可用性、可扩展性、灾难恢复等工作的基础。复制的主要功能1、数据分布。 MySQL提供的复制功能并不需要很大的带宽的要求,因此可以在不同的物理位置来分布数据。2、读操作的负载均衡 通过复制与负载均衡方案,可以将读操作分布到多个从服务器上,实现对读密集型应用的性能优化。3、备份 复制能起到一定的备份作用,但是并不能完全取代备份。4、高可用性和故障原创 2016-12-11 12:14:34 · 1995 阅读 · 0 评论 -
PDO之绑定变量
用绑定变量 SQL时,客户端向服务器发送了一个 SQL语句的原型,服务器端收到了这个 SQL语句“框架”后,经过解析、预处理、生成并存储部分执行计划,然后返回给客户端一个句柄,之后每次执行这类查询,都应使用这个句柄,之后的每次查询,只需要发送某些变量的值就可以了。这样看来,当一次会话中要执行多次类似的SQL时,使用绑定变量 SQL是更高效的,因为在 MySQL服务器端,只需要解析一次 SQL语句了,原创 2016-11-22 23:38:54 · 1207 阅读 · 0 评论 -
MySQL binlog
作为 MySQL服务器层日志,MySQL二进制日志记录了 MySQL中所有成功执行了的事件,一般用来与备库配合使用。默认情况下,二进制日志是关闭的,如果要开启,则要在 MySQL的配置文件中加入:log-bin=dir/filename // 该配置项开启二进制日志功能,并且指定日志文件存放的路径及文件名。修改之后要重启 MySQL服务器。可以使用 SHOW VARIABLES LIKE ‘lo原创 2016-11-29 00:15:32 · 995 阅读 · 0 评论 -
MySQL中MyISAM和InnoDB对B-Tree索引不同的实现方式
索引是 MySQL数据库很重要的一部分,它对数据表查询性能的好坏起着决定性的作用,对大表尤甚。 作为索引中最为常见的一种类型,B-Tree索引大都采用的是 B+Tree数据结构来存储数据(NDB集群存储引擎内部实际上采用 T-Tree结构存储这种索引)。B-Tree通常也意味着所有的值都是按顺序存储的。 大多数的 MySQL引擎都支持这种索引,而不同的存储引擎以不同的方式来实现 B-Tree索引。原创 2016-10-16 01:17:52 · 6636 阅读 · 2 评论 -
MySQL临时表
MySQL在执行SQL查询时可能会用到临时表,一般情况下,用到临时表就意味着性能较低。1.临时表存储MySQL临时表分为“内存临时表”和“磁盘临时表”,其中内存临时表默认使用MySQL的MEMORY存储引擎, default_tmp_storage_engine 可以控制 CREATE TEMPORARY TABLE 创建的临时表的引擎类型,默认是MEMORY。 磁盘临时表使用MySQL的原创 2016-11-23 15:53:41 · 1714 阅读 · 0 评论 -
MySQL创建自定义函数时 Error Code: 1418 的解决方法
今天在MySQL中创建函数时,报了以下错误: Error Code: 1418. This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its declaration and binary logging is enabled (you might want to use the less safe log_bi原创 2016-12-16 00:24:37 · 3760 阅读 · 0 评论 -
如何连接局域网内的 MySQL
准备连接虚拟机里 Linux中的 MySQL,却一直报错:2003——can’t connect to mysql server on localhost(10061)谷歌一番,发现要做以下工作:1.首先使用 ping 命令来确保要确保本机和虚拟机中的 Linux是连通的,如果不通,可能是 Linux的 ip地址没有正确配置。2.更改 MySQL配置。在我的 Linux系统,MySQL配置文件为 /原创 2016-12-07 20:50:07 · 1610 阅读 · 0 评论 -
MySQL视图
在MySQL中,视图是一张虚拟表,但是它本身并不存储任何数据。当使用 SQL语句访问视图时,它每次返回的数据是从其他表中临时生成的。在大多数情况下,MySQL中视图和普通表是被同等对待的,不过,视图和表还是有差别,比如视图不能创建触发器,也不能建立索引等。创建视图CREATE [OR REPLACE] [ALGORITHM = UNDEFINED | MERGE | TEMPTABLE ] VIE原创 2016-11-24 22:32:33 · 656 阅读 · 0 评论 -
MySQL 重要参数 innodb_flush_log_at_trx_commit 和 sync_binlog
innodb_flush_log_at_trx_commit该参数控制重做日志写入磁盘的过程。我们知道 InnoDB 使用“Write Ahead Log”策略来避免数据丢失问题,即依靠重做日志来保证数据能在丢失后进行恢复。因此,InnoDB 重做日志的持久化非常重要。该参数的有效值有 0、1、2:0:事务提交时,不将重做日志缓冲写入磁盘,而是依靠 InnoDB 的主线程每秒执行一次刷新到磁盘。因此原创 2017-02-26 14:46:08 · 8062 阅读 · 2 评论