2016
11-30
11-30
MySQL 的 20+ 条最佳实践
数据库操作是当今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、原因分析接到现...
1.为查询缓存优化你的查询大多数的MySQL服务器都开启了查询缓存。这是提高性最有效的方法之一,而且这是被MySQL的数据库引擎处理的。当有很多相同的查询被执行了多次的时候,这些查询结果会被放到一个缓存中,这样,后续的相同的查询就不用操作表而直接访问缓存结果了。这里最主要的问题是,对于程序员来说,这个事情是很容易被忽略的。因为,我们某些查询语句会让MySQL不使用缓存。请看下面的示例://查询缓存不开启$r=mysql_...