mysql
丶焦人
点滴的积累、终将成为决堤的洪流!——有实力无所惧!
展开
-
MySQL查询优化之explain的深入解析
一、MySQL 查询优化器是如何工作的 MySQL 查询优化器有几个目标,但是其中最主要的目标是尽可能地使用索引,并且使用最严格的索引来消除尽可能多的数据行。最终目标是提交 SELECT 语句查找数据行,而不是排除数据行。优化器试图排除数据行的原因在于它排除数据行的速度越快,那么找到与条件匹配的数据行也就越快。如果能够首先进行最严格的测试,查询就可以执行地更快。 EXPLAIN 的每个输出行提转载 2017-09-24 19:38:00 · 177 阅读 · 0 评论 -
mysql分表之MRG_MyISAM存储引擎实现分表
引用MySQL官方文档中的一段话:MERGE存储引擎,也被认识为MRG_MyISAM引擎,是一个相同的可以被当作一个来用的MyISAM表的集合."相同"意味着所有表同样的列和索引信息.你不能合并列被以不同顺序列于其中的表,没有恰好同样列的表,或有不同顺序索引的表.而且,任何或者所有的表可以用myisampack来压缩. 例子: mysql> show engines; +----------原创 2017-12-05 14:49:33 · 893 阅读 · 0 评论 -
MySQL 的最佳索引攻略
所谓索引就是为特定的mysql字段进行一些特定的算法排序,比如二叉树的算法和哈希算法,哈希算法是通过建立特征值,然后根据特征值来快速查找。而用的最多,并且是mysql默认的就是二叉树算法 BTREE,通过BTREE算法建立索引的字段,比如扫描20行就能得到未使用BTREE前扫描了2^20行的结果,具体的实现方式后续本博客会出一个算法专题里面会有具体的分析讨论; Explain优化查询检测 EX转载 2017-11-06 16:34:41 · 336 阅读 · 0 评论 -
详解MySQL大表优化方案
单表优化 除非单表数据未来会一直不断上涨,否则不要一开始就考虑拆分,拆分会带来逻辑、部署、运维的各种复杂度,一般以整型值为主的表在千万级以下,字符串为主的表在五百万以下是没有太大问题的。而事实上很多时候MySQL单表的性能依然有不少优化空间,甚至能正常支撑千万级以上的数据量: 字段 尽量使用TINYINT、SMALLINT、MEDIUM_INT作为整数类型而非INT,如果非负则加上UNS转载 2017-11-14 17:04:36 · 257 阅读 · 0 评论 -
MySQL数据类型和常用字段属性总结
前言 好比C++中,定义int类型需要多少字节,定义double类型需要多少字节一样,MySQL对表每个列中的数据也会实行严格控制,这是数据驱动应用程序成功的关键。M前言 好比C++中,定义int类型需要多少字节,定义double类型需要多少字节一样,MySQL对表每个列中的数据也会实行严格控制,这是数据驱动应用程序成功的关键。MySQL提供了一组可以赋给表中各个列的数据类型,每个类型都强制数转载 2017-11-17 20:39:11 · 188 阅读 · 0 评论 -
mysql服务性能优化—my.ini配置说明详解 16G内存
MYSQL服务器my.cnf配置文档详解 硬件:内存16G [client] port = 3306 socket = /data/3306/mysql.sock [mysql] no-auto-rehash [mysqld] user = mysql port = 3306 socket = /data/3306/mysql.sock basedir = /us转载 2017-10-15 20:08:24 · 1987 阅读 · 0 评论 -
MySQL优化必须调整的10项配置
即使是经验老道的人也会犯错,会引起很多麻烦。所以在盲目的运用这些推荐之前,请记住下面的内容: 一次只改变一个设置!这是测试改变是否有益的唯一方法。 大多数配置能在运行时使用SET GLOBAL改变。这是非常便捷的方法它能使你在出问题后快速撤销变更。但是,要永久生效你需要在配置文件里做出改动。 一个变更即使重启了MySQL也没起作用?请确定你使用了正确的配置文件。请确定你把配置放在了正确的区域转载 2017-10-15 19:52:22 · 153 阅读 · 0 评论 -
mysql 内置函数大全
对于针对字符串位置的操作,第一个位置被标记为1。 ASCII(str) 返回字符串str的最左面字符的ASCII代码值。如果str是空字符串,返回0。如果str是NULL,返回NULL。 mysql> select ASCII('2'); -> 50 mysql> select ASCII(2); -> 50 mysql> select ASCII('dx');转载 2017-10-11 12:23:29 · 305 阅读 · 0 评论 -
PHP处理大量数据不超出内存限制的问题
例如从两张表中分别查出上百万条数据,现在需要把这些数据组装在一起然后在插入到另外一张表中,请问除了使用数组组装外还能怎么处理,如果使用数组的话怎么才能保证不超出内存限制。 mysql_query函数查询的方式是查询出全部结果后缓存到内存中,这样就会出现超内存的现象,使用另外一个函数mysql_unbuffered_query可以解决这个问题,mysql_unbuffered_query不会...原创 2017-10-17 20:44:02 · 6253 阅读 · 0 评论 -
explain之key_len计算
通常在优化SQL查询的时候,我们都会使用explain分析SQL执行计划,通常来说当用到组合索引的时候我们如何判断索引完全用上呢?当然高手看看表结构及SQL语句就知道到底用到了几个字段,对于不熟悉的同学呢?我们还是可以看看key_len的长度,当然这个计算还是有点复杂的,不过在你看过我这篇博客以后,相信你肯定会计算的,这难不倒聪明的你。 废话不多说了,我们直接上例子。表结构如下。^_^转载 2017-09-20 20:32:33 · 180 阅读 · 0 评论 -
mysql优化Analyze Table
Analyze Table MySQL 的Optimizer(优化元件)在优化SQL语句时,首先需要收集一些相关信息,其中就包括表的cardinality(可以翻译为“散列程度”),它表示某个索引对应的列包含多少个不同的值——如果cardinality大大少于数据的实际散列程度,那么索引就基本失效了。 我们可以使用SHOW INDEX语句来查看索引的散列程度: SHOW INDEX转载 2017-09-27 20:09:12 · 2149 阅读 · 0 评论 -
讨论MyISAM和InnoDB两个存储引擎的索引实现方式
1. MyISAM索引实现: 1)主键索引: MyISAM引擎使用B+Tree作为索引结构,叶节点的data域存放的是数据记录的地址。下图是MyISAM主键索引的原理图: (图myisam1) 这里设表一共有三列,转载 2017-09-10 21:16:56 · 636 阅读 · 0 评论 -
明确方向之—MYSQL DBA
MySQL DBA大概可以分为两种:一种是开发DBA,一种是运维DBA,这里说的MySQL DBA是指运维DBA。一般意义上的DBA指的是运维DBA,只是负责数据库的运营和维护,包括数据库的安装、监控、备份、恢复等基本工作,而高级或资深 DBA职责比这个大得多,需要覆盖产品从需求设计、测试到交付上线的整个生命周期,在此过程中不仅要负责数据库管理系统的搭建和运维,更要参与到前期的数据库设计,中期的数原创 2017-12-05 20:18:54 · 590 阅读 · 0 评论