201611-30 MySQL 的 20+ 条最佳实践 数据库操作是当今Web应用程序中的主要瓶颈。不仅是DBA(数据库管理员)需要为各种性能问题操心,程序员为做出准确的结构化表,优化查询性能和编写更优代码,也要费尽心思。在本文中,我列出了一些针对程序员的MySQL优化技术。在我们开始学习之前,我补充一点:你可以在EnvatoMarket上找到大量的MySQL脚本和实用程序。1.优化查询的查询缓存大部分MySQL服务器都有查询缓存功能。这是提高性能的最有效... 继续阅读 >
201611-08 MySQL简单主从方案暴露问题 1、概述从本篇文章开始我们将向读者介绍mysql的各种服务集群的搭建方式。大致的讨论思路是从最简的MySQL主从方案开始介绍,通过这种方案的不足延伸出更复杂的集群方案,并介绍后者是如何针对这些不足进行改进的。2、MySQL最简单主从方案及工作原理我们讲解的版本还是依据目前在生产环境上使用最多的version5.6进行,其中一些特性在Version5.7和最新的Version8.0中有所改进,但这不影响读者通过文章去理解构建MySQL集群的技... 继续阅读 >
201611-03 MySQL性能调优 对于全栈而言,数据库技能不可或缺,关系型数据库或者nosql,内存型数据库或者偏磁盘存储的数据库,对象存储的数据库或者图数据库……林林总总,但是第一必备技能还应该是MySQL。从LAMP的兴起,到Mariadb的出现,甚至PG的到来,熟练的MySQL技能都是大有用武之地的。MySQL数据库技术的方方面面也是很多,这里只涉及必备的性能调优,推崇从下向上的性能调优,主要包括运行环境,配置参数,SQL性能,和系统架构设计调优。运行环境调... 继续阅读 >
201609-29 对mysql语句的性能分析与优化 1.使用explain,查看查询计划2.使用showprocesslist查看查询过程(处于哪个状态),完整命令如下mysql-uroot-p-e‘showprocesslist\G’|grepstate:|sort|uniq-c|sort-rn此种方法和方法3类似,应该说方法3更好用。3.使用showprofile。默认是禁止的,需要使用setprofiling=1开启。执行一些查询后,键入showprofiles可以看到前面执行语句的查询时间以很高的精度显示了出来。然后使用showprofileforqueryn... 继续阅读 >
201609-26 MySQL 语句大全:创建、授权、查询、修改 一、用户创建、权限、删除1、连接MySql操作连接:mysql-h主机地址-u用户名-p用户密码(注:u与root可以不用加空格,其它也一样)断开:exit(回车)打开cmd,输入mysql-h127.0.0.1-uroot-p然后输入密码。就可以连接到本地的MySql数据库了。2、创建用户:命令:CREATEUSER'username'@'host'IDENTIFIEDBY'password';说明:username-你将创建的用户名,host-指定该用户在哪个主机上可以登陆,如果是... 继续阅读 >
201609-07 MySQL配置文件my.cnf优化详解 MySQL5.5.13参数说明:[client]character-set-server=utf8port =3306socket =/data/mysql/3306/mysql.sock[mysqld]character-set-server=utf8user =mysqlport =3306socket =/data/mysql/3306/mysql.sockbasedir=/usr/local/webserver/mysqldatadir=/data/mysql/3306/datalog-error=/data/mysql/3306/mysql_error.log... 继续阅读 >
201609-07 MySQL两千万数据优化&迁移 最近有一张2000W条记录的数据表需要优化和迁移。2000W数据对于MySQL来说很尴尬,因为合理的创建索引速度还是挺快的,再怎么优化速度也得不到多大提升。不过这些数据有大量的冗余字段和错误信息,极不方便做统计和分析。所以我需要创建一张新表,把旧表中的数据一条一条取出来优化后放回新表;一.清除冗余数据,优化字段结构2000W数据中,能作为查询条件的字段我们是预知的。所以将这部分数据单独创建新的字段,对于有规则的数... 继续阅读 >
201608-25 MySQL 性能、监控与灾难恢复 监控方案: up.time http://www.uptimesoftware.com/ 收费 Cacti http://www.cacti.net/ KDESystemGuard(KSysGuard) http://docs.kde.org/stable/en/kdebase-workspace/ksysguard/index.html GnomeSystemMonitor ... 继续阅读 >
201608-25 MySQL 中处理 Null 时要注意两个陷阱 摘要:作为MySQL数据库管理员,我们经常要与Null做斗争。但是在这其中,你需要注意一下两大陷阱。MySQL数据库是一个基于结构化数据的开源数据库。SQL语句是MySQL数据库中核心语言。不过在MySQL数据库中执行SQL语句,需要小心两个陷阱。陷阱一:空值不一定为空空值是一个比较特殊的字段。在MySQL数据库中,在不同的情形下,空值往往代表不同的含义。这是MySQL数据库的一种特性。如在普通的字段中(字符型的数据),空值就是表示空... 继续阅读 >
201608-25 MySQL避免索引列使用 OR 条件 这个亏已经吃过很多次了,在开发以前的sql代码里面,许多以or作为where条件的查询,甚至更新。这里举例来说明使用or的弊端,以及改进办法。selectf_crm_idfromd_dbname1.t_tbname1wheref_xxx_id=926067and(f_mobile='1234567891'orf_phone='1234567891')limit1从查询语句很容易看出,f_mobile和f_phone两个字段都有可能存电话号码,一般思路都是用or去一条sql解决,但表数据量一大简直是灾难:t_tbanme... 继续阅读 >
201608-25 理解MySQL——索引与优化 写在前面:索引对查询的速度有着至关重要的影响,理解索引也是进行数据库性能调优的起点。考虑如下情况,假设数据库中一个表有10^6条记录,DBMS的页面大小为4K,并存储100条记录。如果没有索引,查询将对整个表进行扫描,最坏的情况下,如果所有数据页都不在内存,需要读取10^4个页面,如果这10^4个页面在磁盘上随机分布,需要进行10^4次I/O,假设磁盘每次I/O时间为10ms(忽略数据传输时间),则总共需要100s(但实际上要好很多很多)... 继续阅读 >
201607-08 table id问题导致主从复制失败 0、导读主从复制环境中,IO、SQL线程都很正常,也没设置过滤规则,但数据就是无法复制到slave上,什么原因?1、问题描述事实上,这个案例发生已经有一阵子了,一直拖到现在我才整理。发现一个主从环境中,slave上的io_thread、sql_thread状态均正常,relaylog也正常接收来自master的event,但slave上却无法正常应用这些event,个别表数据没有复制过来。而且slave上的binlog也没有记录这些表上的操作。2、原因分析接到现... 继续阅读 >
201607-08 MySQL常常被我们误会的地方 MySQL作为数据库的一大主力军,到处存在于我们各种系统中,相信大家都不陌生!但是,你知道你能用不代表你知道细节,那我们就来盘点盘点其中一些我们平时不太注意的地方,一来为了有趣,二来为了不让自己踩坑。声明:要想知道细节,那就去阅读源码,我实在没那本事,只能从片面上来说一些事!1、不区分大小写(字段名)MySQL的查询字段名不区分大小写,但是查询的内容是要区分大小写的,所以能用下划线命名的就不要用大小写来区分... 继续阅读 >
201606-07 MySQL 的日常使用 *nixos下配置文件一般存放位置Defaultoptionsarereadfromthefollowingfilesinthegivenorder:/etc/my.cnf,/etc/mysql/my.cnf,/usr/local/etc/my.cnf,~/.my.cnf默认设置按一下顺序读取:/etc/my.cnf,/etc/mysql/my.cnf,/usr/local/etc/my.cnf,~/.my.cnfUbuntu下的启动,停止与重启启动方式:方式一:sudo/etc/init.d/mysqlstart方式二:sudostartmysql... 继续阅读 >
201606-03 21条最佳MySQL性能优化 1.为查询缓存优化你的查询大多数的MySQL服务器都开启了查询缓存。这是提高性最有效的方法之一,而且这是被MySQL的数据库引擎处理的。当有很多相同的查询被执行了多次的时候,这些查询结果会被放到一个缓存中,这样,后续的相同的查询就不用操作表而直接访问缓存结果了。这里最主要的问题是,对于程序员来说,这个事情是很容易被忽略的。因为,我们某些查询语句会让MySQL不使用缓存。请看下面的示例://查询缓存不开启$r=mysql_... 继续阅读 >
201604-11 MySQL索引背后的数据结构及算法原理 摘要本文以MySQL数据库为研究对象,讨论与数据库索引相关的一些话题。特别需要说明的是,MySQL支持诸多存储引擎,而各种存储引擎对索引的支持也各不相同,因此MySQL数据库支持多种索引类型,如BTree索引,哈希索引,全文索引等等。为了避免混乱,本文将只关注于BTree索引,因为这是平常使用MySQL时主要打交道的索引,至于哈希索引和全文索引本文暂不讨论。文章主要内容分为三个部分。第一部分主要从数据结构及算法理论层面讨论... 继续阅读 >