2017
05-04
05-04
我必须得告诉大家的MySQL优化原理
说起MySQL的查询优化,相信大家积累一堆技巧:不能使用SELECT*、不使用NULL字段、合理创建索引、为字段选择合适的数据类型.....你是否真的理解这些优化技巧?是否理解其背后的工作原理?在实际场景下性能真有提升吗?我想未必。因而理解这些优化建议背后的原理就尤为重要,希望本文能让你重新审视这些优化建议,并在实际业务场景下合理的运用。MySQL逻辑架构如果能在头脑中构建一幅MySQL各组件之间如何协同工作的架构...
继续阅读 >
网上已经有很多拿PostgreSQL与MySQL比较的文章了,这篇文章只是对一些重要的信息进行下梳理。在开始分析前,先来看下这两张图:MySQLMySQL声称自己是最流行的开源数据库。LAMP中的M指的就是MySQL。构建在LAMP上的应用都会使用MySQL,如WordPress、Drupal等大多数php开源程序。MySQL最初是由MySQLAB开发的,然后在2008年以10亿美金的价格卖给了Sun公司,Sun公司又在2010年被Oracle收购。Oracle支持MySQL的多个...
基础篇//查询时间,友好提示$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...
数据库操作是当今Web应用程序中的主要瓶颈。不仅是DBA(数据库管理员)需要为各种性能问题操心,程序员为做出准确的结构化表,优化查询性能和编写更优代码,也要费尽心思。在本文中,我列出了一些针对程序员的MySQL优化技术。在我们开始学习之前,我补充一点:你可以在EnvatoMarket上找到大量的MySQL脚本和实用程序。1.优化查询的查询缓存大部分MySQL服务器都有查询缓存功能。这是提高性能的最有效...
1、概述从本篇文章开始我们将向读者介绍mysql的各种服务集群的搭建方式。大致的讨论思路是从最简的MySQL主从方案开始介绍,通过这种方案的不足延伸出更复杂的集群方案,并介绍后者是如何针对这些不足进行改进的。2、MySQL最简单主从方案及工作原理我们讲解的版本还是依据目前在生产环境上使用最多的version5.6进行,其中一些特性在Version5.7和最新的Version8.0中有所改进,但这不影响读者通过文章去理解构建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...
一、用户创建、权限、删除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-指定该用户在哪个主机上可以登陆,如果是...
摘要:作为MySQL数据库管理员,我们经常要与Null做斗争。但是在这其中,你需要注意一下两大陷阱。MySQL数据库是一个基于结构化数据的开源数据库。SQL语句是MySQL数据库中核心语言。不过在MySQL数据库中执行SQL语句,需要小心两个陷阱。陷阱一:空值不一定为空空值是一个比较特殊的字段。在MySQL数据库中,在不同的情形下,空值往往代表不同的含义。这是MySQL数据库的一种特性。如在普通的字段中(字符型的数据),空值就是表示空...
这个亏已经吃过很多次了,在开发以前的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...
写在前面:索引对查询的速度有着至关重要的影响,理解索引也是进行数据库性能调优的起点。考虑如下情况,假设数据库中一个表有10^6条记录,DBMS的页面大小为4K,并存储100条记录。如果没有索引,查询将对整个表进行扫描,最坏的情况下,如果所有数据页都不在内存,需要读取10^4个页面,如果这10^4个页面在磁盘上随机分布,需要进行10^4次I/O,假设磁盘每次I/O时间为10ms(忽略数据传输时间),则总共需要100s(但实际上要好很多很多)...
0、导读主从复制环境中,IO、SQL线程都很正常,也没设置过滤规则,但数据就是无法复制到slave上,什么原因?1、问题描述事实上,这个案例发生已经有一阵子了,一直拖到现在我才整理。发现一个主从环境中,slave上的io_thread、sql_thread状态均正常,relaylog也正常接收来自master的event,但slave上却无法正常应用这些event,个别表数据没有复制过来。而且slave上的binlog也没有记录这些表上的操作。2、原因分析接到现...