FORCE INDEX 强制索引 只使用建立在field1上的索引,而不使用其它字段上的索引. SELECT * FROM table1 FORCE INDEX (field1) IGNORE INDEX 忽略索引 table1 表中field1和field2上的索引不被使用 SELECT * FROM table1 IGNORE INDEX (field1, field2) SQL_NO_CACHE 不对结果集进行缓存,关闭查询缓冲 有一些SQL语句需要实时地查询数据,或者并不经常使用(可能一…
MySQL 5.6/5.7 参数文件优化配置[client]port = 3306socket = /data/mysql/tmp/mysql.sockdefault-character-set = utf8mb4 [mysqld]# ---------------- Basic ----------------port = 3306socket = /data/mysql/tmp/mysql.sockbasedir = /usr/local/mysql datadir = /data/mysq…
一篇文章: 使用use index优化sql查询   先看一下arena_match_index的表结构,大家注意表的索引结构CREATE TABLE `arena_match_index` (  `tid` int(10) unsigned NOT NULL DEFAULT '0',  `mid` int(10) unsigned NOT NULL DEFAULT '0',  `group` int(10) unsigned NOT NULL DEFAULT '0',  `round` tin…
背景:由于我负责i西科教务处系统,i西科用户量达到20000人左右,那么假设每人每星期10门讲课,数据库记录信息将是20万条,如果不将课程表进行分区或分表,就会造成爆表的情况,如此看来,分区是必须要做的事情. 1.待讨论问题 ⑴MySQL分区问题    分区的类型 1.RANGE 分区:基于属于一个给定连续区间的列值,把多行分配给分区. 2.LIST 分区:类似于按RANGE分区,区别在于LIST分区是基于列值匹配一个离散值集合中的某个值来进行选择. 2.HASH分区:基于用户定义的表达式的返回…
一.使用show variables 和show status 命令查看MySQL的服务器静态参数值和动态运行状态信息. 二.可以使用 mysqld --verbose --help|more 查看某个参数的定义.加上 grep 过滤. 三.key_buffer_size 用于MyISAM引擎的全局索引缓存. 四.table_cache 数据库用户打开表的缓存数量.可借助 open_tables(当前打开表的数量)来决策大小. 五.innodb_buffer_pool_size 定义了InnoD…
转自:https://m.2cto.com/database/201701/557910.html MYSQL优化主要分为以下四大方面: 设计:存储引擎,字段类型,范式与逆范式 功能:索引,缓存,分区分表. 架构:主从复制,读写分离,负载均衡. 合理SQL:测试,经验. 一.存储引擎 在创建表的时候我们使用sql语句,Create table tableName () engine=myisam|innodb; 这里就指明了存储引擎是myisam还是innodb.存储引擎是一种用来存储MySQL…
MySQL优化 MYSQL优化主要分为以下四大方面: 设计:存储引擎,字段类型,范式与逆范式 功能:索引,缓存,分区分表. 架构:主从复制,读写分离,负载均衡. 合理SQL:测试,经验. 一.存储引擎 在创建表的时候我们使用sql语句,Create table tableName () engine=myisam|innodb; 这里就指明了存储引擎是myisam还是innodb.存储引擎是一种用来存储MySQL中对象(记录和索引)的一种特定的结构(文件结构),处于MySQL服务器的最底层,直接…
文章出处:http://inter12.iteye.com/blog/1430144 MYSQL的全表扫描,主键索引(聚集索引.第一索引),非主键索引(非聚集索引.第二索引),覆盖索引四种不同查询的分析 1.前置条件: 本次是基于小数据量,且数据块在一个页中的最理想情况进行分析,可能无具体的实际意义,但是可以借鉴到各种复杂条件下,因为原理是相同的,知小见大,见微知著! 打开语句分析并确认是否已经打开 Java代码   mysql> set profiling=1; Query OK, 0 row…
今天我想对一个Greenfield项目上可以采用的各种性能优化策略作个对比.换言之,该项目没有之前决策强加给它的各种约束限制,也还没有被优化过. 具体来说,我想比较的两种优化策略是优化MySQL和缓存.提前指出,这些优化是正交的,唯一让你选择其中一者而不是另一者的原因是他们都耗费了资源,即开发时间. 优化MySQL 优化MySQL时,一般会先查看发送给mysql的查询语句,然后运行explain命令.稍加审查后很常见的做法是增加索引或者对模式做一些调整. 优点 1.一个经过优化的查询对于所有使用…
-- MySQL优化 -- mysql 慢查日志的开启方式和存储 -- 1) 查看mysql是否开启慢查询日志 SHOW VARIABLES LIKE 'slow_query_log'; -- 2) 将慢查询日志记录在特定文件日志中 SET GLOBAL slow_query_log_file = '/home/mysql/sql_log/mysql-slow.log' -- 3)设置没有索引的记录到慢查询日志中, 通常情况下进行数据库优化过程中,主要是为了优化表和索引以及查询的一些使用方式 S…
1.MySQL常用存储引擎的锁机制 MyISAM和MEMORY采用表级锁(table-level locking) BDB采用页面锁(page-level locking)或表级锁,默认为页面锁 InnoDB支持行级锁(row-level locking)和表级锁,默认为行级锁 2.各种锁特点 表级锁:开销小,加锁快:不会出现死锁:锁定粒度大,发生锁冲突的概率最高,并发度最低 行级锁:开销大,加锁慢:会出现死锁:锁定粒度最小,发生锁冲突的概率最低,并发度也最高 页面锁:开销和加锁时间界于表锁和行…
方法一: procedure TForm1.Button2Click(Sender: TObject);begin Form2.Show; Application.NormalizeTopMosts; SetWindowPos(Form2.Handle, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE or SWP_NOSIZE);end; 方法二: https://blog.csdn.net/xiaowei_sql/article/details/50829178?t…
测试结果为:count(*)和count(1)基本相等,count(非主键字段)最耗性能 -- 数据量 708254select count(*) from tmp_test1;-- avg 0.2240.229  0.2190.2270.2220.2150.2240.2250.2210.2400.219 select count(1) from tmp_test1;-- avg 0.2260.2300.2170.2170.2330.2250.2200.2350.2320.2330.219 se…
MySQL优化之COUNT(*)效率 刚给一个朋友解决他写的Discuz!插件的问题,说到MySQL的COUNT(*)的效率,发现越说越说不清楚,干脆写下来,分享给大家. COUNT(*)与COUNT(COL)网上搜索了下,发现各种说法都有:比如认为COUNT(COL)比COUNT(*)快的:认为COUNT(*)比COUNT(COL)快的:还有朋友很搞笑的说到这个其实是看人品的. 在不加WHERE限制条件的情况下,COUNT(*)与COUNT(COL)基本可以认为是等价的:但是在有WHERE限制…
说到MySQL的COUNT(*)的效率,发现越说越说不清楚,干脆写下来,分享给大家. COUNT(*)与COUNT(COL)网上搜索了下,发现各种说法都有:比如认为COUNT(COL)比COUNT(*)快的:认为COUNT(*)比COUNT(COL)快的:还有朋友很搞笑的说到这个其实是看人品的. 在不加WHERE限制条件的情况下,COUNT(*)与COUNT(COL)基本可以认为是等价的:但是在有WHERE限制条件的情况下,COUNT(*)会比COUNT(COL)快非常多: 具体的数据参考如下:…
注:在执行SQL语句前加上explain可以查看MySQL的执行计划 数据库:MySQL官方提供的sakila数据库 Max优化: 例如:查询最后支付时间 explain select max(payment_date) from payment \G; 询的类型为simple,没有用到任何索引,扫描行数为1万多行,用时0.02sec 优化方法: 在payment_date列建立索引 create index idx_paydate on payment(payment_date); 此执行结果…
[优化]COUNT(1).COUNT(*).COUNT(常量).COUNT(主键).COUNT(ROWID).COUNT(非空列).COUNT(允许为空列).COUNT(DISTINCT 列名) 1.1  BLOG文档结构图 1.2  前言部分 1.2.1  导读和注意事项 各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学到一些其它你所不知道的知识,~O(∩_∩)O~: ① COUNT(1)和COUNT(*)的区别(重点) ② 10046和10053的使用 ③ “SELECT COUN…
MyISAM引擎,记录数是结构的一部分,已存cache在内存中; InnoDB引擎,需要重新计算,id是主键的话,会加快扫描速度: 所以select count(*)  MyISAM完胜! MyISAM 在有where 条件存在的时候,速度与innodb引擎相当,都需要重新扫描记录,无其他优势: 对于select count(*) & count(id)效率没有太大差别,都会扫描全表或者where之后的结果: select count(*) 会转换为count(1); count(id)只会计算…
#!/bin/bash basedir=$mysql datadir=$mysql/data server_id=$(hostname -I | awk '{print $NF}'|awk -F '.' '{print $NF}') mem=$('{print $2}') innodb_buffer_pool_size=$(($mem///+))G cat >/etc/my.cnf <<EOF [mysqld] basedir = ${basedir} datadir = ${datad…
原文地址:http://www.cnblogs.com/verrion/p/mysql_optimised.html MySQL优化聊两句 MySQL不多介绍,今天聊两句该如何优化以及从哪些方面入手,很多运维从业者一说起优化就不知所措,当运营过程中某个参数值到达一定阀值之后,就会出现各种问题,很多运维工程师这时不知所措,第一可能也从来没有处理过类似情况,另一方面业务又紧张,系统不正常,首要任务是解决问题,那没办法只能重启了,我们先不说重启是否可行,比如有些应用可以重启并且解决了问题,但如没有解决…
前些天看到一篇文章说到PHP的瓶颈很多情况下不在PHP自身,而在于数据库.我们都知道,PHP开发中,数据的增删改查是核心.为了提升PHP的运行效率,程序员不光需要写出逻辑清晰,效率很高的代码,还要能对query语句进行优化.虽然我们对数据库的读取写入速度上却是无能为力,但在一些数据库类扩展像memcache.mongodb.redis这样的数据存储服务器的帮助下,PHP也能达到更快的存取速度,所以了解学习这些扩展也是非常必要,这一篇先说一下MySQL常见的优化策略. 几条MySQL小技巧 1.S…
这周就要从泰笛离职了,在公司内部的wiki上,根据公司实际的项目,写了一些mysql的优化方法,供小组里的小伙伴参考下,没想到大家的热情很高,还专门搞了个ppt讲解了一下. 举了三个大家很容易犯错的地方,之前项目中也存在,后期修正了. MySQL优化实例(一) 以我们项目中一个sql语句为例,展示sql语句优化的步骤. webService项目中有个getWashXiaogeId的封装方法,用于分配配送小哥. 其中,有一段逻辑是查询某个小哥当前的配送订单量(绿植+洗涤).查询慢查询日志时发现,这…
一.我们可以且应该优化什么? 硬件 操作系统/软件库 SQL服务器(设置和查询) 应用编程接口(API) 应用程序 -------------------------------------------------------------------------------- 二.优化硬件 如果你需要庞大的数据库表(>2G),你应该考虑使用64位的硬件结构,像Alpha.Sparc或即将推出的IA64.因为MySQL内部使用大量64位的整数,64位的CPU将提供更好的性能. 对大数据库,优化的次…
正常情况下,初创公司的流量并不是很大,mysql数据库在未做优化的情况依然可以满足性能要求,特别是5.6版本后mysql在性能上还是有了很大提升,所以在初期并没有花精力在此上面.但后来发生的一系列问题还是说明mysql性能优化在项目启动时就应该重视起来.下面就出现问题的原因和需要注意的地方说明如下: 问题来源 开发人员之前多数使用oracle,由于oracle强大的性能和所做项目多是内部企业应用,不太可能出现性能问题.在这样的背景下,开发人员依然按照原来的方式来写代码,导致后来性能问题,总结有以…
深入理解 index merge 是使用索引进行优化的重要基础之一.理解了 index merge 技术,我们才知道应该如何在表上建立索引. 1. 为什么会有index merge 我们的 where 中可能有多个条件(或者join)涉及到多个字段,它们之间进行 AND 或者 OR,那么此时就有可能会使用到 index merge 技术.index merge 技术如果简单的说,其实就是:对多个索引分别进行条件扫描,然后将它们各自的结果进行合并(intersect/union). MySQL5.…
唯一索引(unique index)强调唯一,就是索引值必须唯一. create unique index [索引名] on 表名 (列名);alter table 表名 add unique index [索引名] (列名);删除索引:drop index 索引名 on 表名;alter table 表名 drop index 索引名; 主键主键是一种特殊的唯一索引,主键要求建表时指定,一般用auto_increment列,关键字是primary key creat table test2 (…
1,当只要一行数据时使用 LIMIT 1如果明确只取一条数据,要加上limit 1; 2,避免 SELECT *,根据需要获取字段应该养成一个需要什么就取什么的好的习惯. 3,使用 ENUM 而不是 VARCHARENUM 类型是非常快和紧凑的.在实际上,其保存的是 TINYINT,但其外表上显示为字符串.这样一来,用这个字段来做一些选项列表变得相当的完美.如果你有一个字段,比如“性别”,“国家”,“民族”,“状态”或“部门”,你知道这些字段的取值是有限而且固定的,那么,你应该使用 ENUM 而…
对于任何DBMS,索引都是进行优化的最主要的因素.对于少量的数据,没有合适的索引影响不是很大,但是,当随着数据量的增加,性能会急剧下降.如果对多列进行索引(组合索引),列的顺序非常重要,MySQL仅能对索引最左边的前缀进行有效的查找. 例如:假 设存在组合索引it1c1c2(c1,c2),查询语句select * from t1 where c1=1 and c2=2能够使用该索引.查询语句select * from t1 where c1=1也能够使用该索引.但是,查询语句select * f…
MySQL查询优化器有几个目标,但是其中最主要的目标是尽可能地使用索引,并且使用最严格的索引来消除尽可能多的数据行. 你的最终目标是提交SELECT语句查找数据行,而不是排除数据行.优化器试图排除数据行的原因在于它排除数据行的速度越快,那么找到与条件匹配的数据行也就越快. 如何 更好的 利用索引: 1:尽量比较数据类型相同的数据列.当你在比较操作中使用索引数据列的时候,请使用数据类型相同的列.相同的数据类型比不同类型的性能要高一些. 例如,INT与BIGINT是不同的.CHAR(10)被认为是C…
转自 http://coolshell.cn/articles/1846.html MYSQL 优化建议20条 1. 为查询缓存优化你的查询 大多数的MySQL服务器都开启了查询缓存.这是提高性最有效的方法之一,而且这是被MySQL的数据库引擎处理的.当有很多相同的查询被执行了多次的时候,这些查询结果会被放到一个缓存中,这样,后续的相同的查询就不用操作表而直接访问缓存结果了. 这里最主要的问题是,对于程序员来说,这个事情是很容易被忽略的.因为,我们某些查询语句会让MySQL不使用缓存.请看下面的…