随笔分类 -  MySQL

上一页 1 ··· 12 13 14 15 16 17 18 19 20 ··· 23 下一页
摘要:从5.6版本开始,可以利用 mysqlbinlog命令把远程机器的日志备份到本地目录,这样就更加方便快捷的实现一个binlog server。 常用的参数 -R | –read-from-remote-server 表示开启binlog备份,在对应的主节点上请求binlog到本地。 –raw 被复制 阅读全文
posted @ 2018-08-04 23:17 屠魔的少年
摘要:全备脚本:innobackupex --defaults-file=/etc/my.cnf --user root --password mypasswd /mydata/fullbak/ 增备脚本:innobackupex --defaults-file=/etc/my.cnf --user ro 阅读全文
posted @ 2018-08-04 23:04 屠魔的少年
摘要:xbstream -x < ynhw-mysql-slave.01.mysql.prod.sg_fullbak_20180326134255.xbstream -C /data/mysql cd /data/chown -R mysql:mysql mysql 然后查看 /data/mysql/xt 阅读全文
posted @ 2018-08-04 22:29 屠魔的少年
摘要:#!/bin/bash # 10 23 * * * /bin/bash /data/script/backup.sh BDATE=`date +%Y%m%d%H%M%S` BPATH=/data/backup BFILE=${BPATH}/`hostname`_fullbak_${BDATE}.xb 阅读全文
posted @ 2018-08-04 22:29 屠魔的少年
摘要:hash索引只能显示应用于heap引擎表。 索引设计原则: 1.一个索引里包含的列数,最好不要超过5个。 2.一个表的索引数,也不要太多,一般也不要超过5个。 3.联合索引中,把过滤性高(基数大)的列放在前面。 MySQL索引限制: 1.不支持混合顺序。 2.不支持位图索引。 3.不支持函数索引。 阅读全文
posted @ 2018-08-02 09:37 屠魔的少年
摘要:覆盖索引(convering indexes) 通过索引数据结构,即可直接返回数据,不需要回表。 执行计划中,显式关键字 using index。 假设有这样的索引 indx1(id,user,passwd) 覆盖索引会被用到: 1.SELECT id,user,passwd FROM t1 WHE 阅读全文
posted @ 2018-08-02 09:37 屠魔的少年
摘要:联合索引(Combined Indexes,Multiple-Cloumn Indexes) 多列组成,所以也叫多列索引。 适合WHERE条件中的多列组合。 有时候还可以用于避免回表(索引覆盖)。 MySQL还不支持多列不同排序规则。 联合索引建议 1.WHERE条件中,经常同时出现的列放在联合索引 阅读全文
posted @ 2018-08-01 15:21 屠魔的少年
摘要:假设有联合索引 idx1(a,b,c) 下面的SQL可完整用到索引。 1.SELECT ... WHERE b=? AND c=? AND a=?; 2.SELECT ... WHERE b=? AND a=? AND c=?; 3.SELECT ... WHERE a=? AND b IN(?,? 阅读全文
posted @ 2018-08-01 15:21 屠魔的少年
摘要:前缀索引(prefix indexes) 部分索引的原因: 1.char/varchar太长全部做索引的话,效率太差,存在浪费。 2.或者blob/text类型不能整列作为索引列,因此需要使用前缀索引。 部分索引选择建议: 1.统计平均值。 2.遵循2/8原则。 缺点: 无法使用其前缀索引做ORDE 阅读全文
posted @ 2018-08-01 15:21 屠魔的少年
摘要:通过索引扫描的记录数超过30%,变成全表扫描。 联合索引中,第一个索引列使用范围查询(这时用到部分索引)。 联合索引中,第一个查询条件不是最左索引列。 模糊查询条件列最左以通配符%开始。 HEAP表使用HASH索引时,使用范围检索或者ORDER BY。 多表关联时,排序字段不属于驱动表,无法利用索引 阅读全文
posted @ 2018-08-01 15:20 屠魔的少年
摘要:建议使用索引: 1.经常检索的列。 2.经常用于表连接的列。 3.经常排序、分组的列。 不建议使用索引: 1.技术很低的列。 2.更新频繁但检索不频繁的列。 3.BLOG/TEXT等长内容列。 4.很少用于检索的列。 索引的优点: 1.提高数据检索效率。 2.提高表间的JOIN效率。 3.利用唯一性 阅读全文
posted @ 2018-08-01 15:20 屠魔的少年
摘要:唯一索引(UNIQUE KEY) 不允许具有索引值相同的行,从而禁止重复的索引或键值。 严格意义上讲,应该叫做唯一约束。 在唯一约束上,和主键一样(以MyISAM引擎为代表)。 其他不同的方面: 1.唯一索引允许有空值。 2.一个表只能有一个主键,但可以有多个唯一索引。 3.InnoDB表中主键必须 阅读全文
posted @ 2018-08-01 15:19 屠魔的少年
摘要:InnoDB主键特点 1.索引定义时,若不显示包含主键,会隐式加入主键值。 2.索引定义时,若显示包含主键,会加入主键值。 3.在5.6.8以后,优化器已能自动识别索引末尾的主键值(Index Extensions),在这之前则需要显式加上主键列才可以被识别 案例:某InnoDB表,没有自增列主键, 阅读全文
posted @ 2018-08-01 15:19 屠魔的少年
摘要:外键约束(foreign key constraints) 确保存储在外键表中的数据一致性、完整性。 外键前提:本表列须于外键列类型相同(外键须是外表主键)。 外键选择原则 1.为关联字段创建外键。 2.所有的键都必须唯一。 3.避免使用复合键。 4.外键总是关联唯一的键字段。 阅读全文
posted @ 2018-08-01 15:19 屠魔的少年
摘要:1.减少查询对象的数据页(db block)数量。 尽量避免使用 * 用准确的列明减少不必要的一些资源浪费。 2.查看是否使用了index。 索引是SQL性能调优的重要手段,下面几个是有索引不能使用的情况。 (1)在索引列中不进行加工。 (2)不诱导索引列的数据类型转换。 (3)比较null的时候使 阅读全文
posted @ 2018-08-01 15:13 屠魔的少年
摘要:1.使用or的时候,必须养成两边添加括号,否则结果完全不一样。 2.or条件如果复杂的情况下,可以适当考虑union all改写。 阅读全文
posted @ 2018-08-01 15:12 屠魔的少年
摘要:1.有索引的列最好进行 ‘aa%’形式可以使用一些索引。 2.如果非得进行 ‘%aa%’这种类型查询,那这个条件不要进行主要过滤条件。 意思是这个列如果有索引就不能用索引,即使用了,索引页是进行对整个索引进行全部查找。 3.日期形式的类型,不能进行 ‘20%’ 这种查询,索引将不能使用。 阅读全文
posted @ 2018-08-01 15:11 屠魔的少年
摘要:1.一般来说in比exists更有利(更容易变成join)。 2.尽量避免union,使用union all代替,避免sort。 3,绝对不能在没有on条件下使用join(除非有特殊目的)。 4.outer join的时候注意on和where。 阅读全文
posted @ 2018-08-01 15:10 屠魔的少年
摘要:排查一般MySQL性能问题,通常要记录下面几项信息: 1、mysql> show processlist; 2、mysql> show engine innodb status\G 3、表ddl 4、有问题的SQL的EXPLAIN执行计划 阅读全文
posted @ 2018-08-01 15:05 屠魔的少年
摘要:ARCHAR和CHAR是两种最主要的字符串类型。 VARCHAR: varchar类型选用于存储可变长字符串,需要使用1或者2个额外字节记录字符串的长度,比定长类型更节省空间,因为它仅使用必要的空间(例如越短的字符串使用越少的空间)。由于VARCHAR行是变长的,在UPDATE时可能使行变得比原来更 阅读全文
posted @ 2018-08-01 14:48 屠魔的少年

上一页 1 ··· 12 13 14 15 16 17 18 19 20 ··· 23 下一页