201705-04 我必须得告诉大家的MySQL优化原理 说起MySQL的查询优化,相信大家积累一堆技巧:不能使用SELECT*、不使用NULL字段、合理创建索引、为字段选择合适的数据类型.....你是否真的理解这些优化技巧?是否理解其背后的工作原理?在实际场景下性能真有提升吗?我想未必。因而理解这些优化建议背后的原理就尤为重要,希望本文能让你重新审视这些优化建议,并在实际业务场景下合理的运用。MySQL逻辑架构如果能在头脑中构建一幅MySQL各组件之间如何协同工作的架构... 继续阅读 >
201703-23 MySQL与PostgreSQL相比哪个更好? 网上已经有很多拿PostgreSQL与MySQL比较的文章了,这篇文章只是对一些重要的信息进行下梳理。在开始分析前,先来看下这两张图:MySQLMySQL声称自己是最流行的开源数据库。LAMP中的M指的就是MySQL。构建在LAMP上的应用都会使用MySQL,如WordPress、Drupal等大多数php开源程序。MySQL最初是由MySQLAB开发的,然后在2008年以10亿美金的价格卖给了Sun公司,Sun公司又在2010年被Oracle收购。Oracle支持MySQL的多个... 继续阅读 >
201612-13 Mysql 常用 SQL 语句大全 基础篇//查询时间,友好提示$sql="selectdate_format(create_time,'%Y-%m-%d')asdayfromtable_name";//int时间戳类型$sql="selectfrom_unixtime(create_time,'%Y-%m-%d')asdayfromtable_name";//一个sql返回多个总数$sql="selectcount(*)all,";$sql.="count(casewhenstatus=1thenstatusend)status_1_num,";$sql.="count(casewhenstatus=2thenstatusend)status_2_num";$sql... 继续阅读 >
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的查询字段名不区分大小写,但是查询的内容是要区分大小写的,所以能用下划线命名的就不要用大小写来区分... 继续阅读 >