MySQL
菜鸟=大神
只做一个每天进步一点点的人,加油!
展开
-
MySQL之Schema与数据类型优化
良好的逻辑设计和物理设计是高性能的基石,应该根据系统将要执行的查询语句来设计schema,这往往需要权衡各种因素。如,反范式的设计可以加快某些类型的查询,但同时可能使另一种的查询变慢。比如,添加计数表和汇总表是一种很好的优化查询的方式,但这些表的维护成本可能会很高。MySQL独有的特性和实现细节对性能的影响也很大。文章目录选择优化的数据类型数据类型整数类型实数类型字符串类型VARCHARCH...原创 2018-10-11 14:07:50 · 292 阅读 · 0 评论 -
MySQL之查询优化器的提示
如果对MySQL选择的执行计划不满意,可以使用优化器的几个提示(hint)来控制最终的执行计划。文章目录HIGN_PRIORITY和LOW_PRIORITYDELAYEDSTRAIGHT_JOINSQL_SMALL_RESULT和SQL_BIG_RESULTSQL_BUFFER_RESULTSQL_CACHE和SQL_NO_CACHESQL_CALC_FOUND_ROWSFOR UPDATE...原创 2018-10-30 15:39:27 · 420 阅读 · 0 评论 -
MySQL之use index()查询
语法:SELECT ... FROM TABLE [ {USE|IGNORE|FORCE} INDEX (key_list)] WHERE ...USE INDEX用来提供你希望MySQL去参考的索引列表,就可以让MySQL不再考虑使用其他可用的索引。INGNORE INDEX让MySQL忽略一个或者多个索引。FORCE INDEX强制MySQL使用一个特定的索引。...原创 2018-10-30 14:27:13 · 5245 阅读 · 0 评论 -
MySQL之用户自定义变量
在查询中混合使用过程化和关系化逻辑的时候,自定义变量可能会非常有用。单纯的关系查询将所有的东西都当成无序的数据集合,并且一次性操作它们。用户自定义变量是一个用来存储内容的临时容器,在连接MySQL的整个过程中都存在。可以使用SET和SELECT来定义他们(在某些情况下,也可以使用=来赋值,不过为了避免歧义,建议始终使用:=):SET @one := 1;SET @min_actor := ...原创 2018-10-31 18:27:58 · 6629 阅读 · 0 评论 -
MySQL之查询性能优化
文章目录MySQL是否在扫描额外的记录响应时间扫描的行数的返回的行数扫描的行数和访问类型重构查询的方式一个复杂查询还是多个简单查询切分查询分解关联查询查询执行的基础MySQL客户端和服务器通信协议查询状态查询缓存查询的优化处理语法执行器和预处理MySQL是否在扫描额外的记录在确定查询只返回需要的数据之后,接下看看看查询是否为了返回结果扫描了过多的数据。三个衡量查询开销的指标如下:响应时...原创 2018-10-24 17:59:54 · 440 阅读 · 0 评论 -
MySQL之优化特定类型的查询
文章目录优化COUNT()查询关于MyISAM的神话简单的优化使用近似值优化关联查询优化子查询优化GROUP BY和DISTINCT优化LIMIT分页优化SQL_CALC_FOUND_ROWS优化UNION查询静态查询分析使用用户自定义变量优化COUNT()查询COUNT()可以统计某个列值的数量,也可以统计行数。在统计列值时要求列值是非空的(不统计NULL)。如果在括号中指定了列或列的表...原创 2018-10-31 15:19:25 · 275 阅读 · 0 评论 -
MySQL之查询优化器的局限性
MySQL的万能"嵌套循环"并不是对每种查询都是最优的。不过还好,MySQL只对少部分查询不使用,我们往往可以通过改写查询来让MySQL高效地完成工作。MySQL 5.6以后,会消除很多MySQL原本的限制,让更多的查询能够以尽可能高的效率完成。文章目录关联子查询UNION的限制关联子查询MySQL的关联子查询实现得非常糟糕。最糟糕的一类查询时WHERE条件中包含IN()的子查询。I...原创 2018-10-29 18:33:30 · 292 阅读 · 0 评论 -
MySQL之EXPLAIN中type列和extra列的含义
文章目录type列extra列type列MySQL找到数据行的方式,即访问类型。效率从最差到最好的顺序如下:ALL全表扫描,没有用到任何的索引,这是一种非常原始的查找方法,非常的耗时二号抵消。index这种类型只是另一种形式的全部扫描,只不过它的扫描顺序是按照索引的顺序,然后根据索引回表取数据。和All相比,他们都是取得了全表的数据,而且index要先读索引再回表取数据。如果连接类...原创 2018-10-22 14:36:14 · 2108 阅读 · 1 评论 -
MySQL之基准测试
基准测试(benchmark)是针对系统设计的一种压力测试。通常的目标是为了掌握系统的行为。但也有其他原因,如重新某个系统状态,或者做新硬件的可靠性测试。文章目录为什么需要基准测试基准测试的策略测试何种指标基准测试的方法设计和规划基准测试基准测试应该运行多长时间获取系统性能和状态获得准确的测试结果运行基准测试并分析结果基准测试工具集成式测试工具为什么需要基准测试为什么基准测试很重要?因...原创 2018-09-30 17:27:44 · 678 阅读 · 0 评论 -
MySQL之存储引擎
在文件系统中,MySQL将每个数据库(schema)保存为数据目录下的一个子目录。创建表时,MySQL会在数据库子目录下创建一个和表同名的.frm文件保存表的定义。例如创建一个MyTable的表,MySQL会在MyTable.frm文件中保存该表的定义。因为MySQL使用文件系统的目录和文件来保存数据库和表的定义,大小写敏感性和具体的平台密切相关。Windows中,大小写是不敏感的;但在类Uni...原创 2018-09-30 14:18:10 · 194 阅读 · 0 评论 -
MySQL之架构与历史
MySQL最重要,最与众不同的特性是它的存储引擎架构,这种架构的设计将查询处理(Query Processing)及其他系统任务(Server Task)和数据的存储/提取相分离。这种处理和存储相分离的设计可以在使用时根据性能、特性和其他需求来选择数据存储的方式。文章目录MySQL逻辑架构连接管理与安全性优化与执行并发控制读写锁锁粒度表锁行级锁事务隔离级别死锁事务日志MySQL中的事务自动提...原创 2018-09-29 18:20:13 · 295 阅读 · 0 评论 -
MySQL之高性能索引
索引在MySQL中也叫做键(key)是存储引擎用于快速找到记录的一种数据结构。索引对于良好的性能非常关键。尤其是表中的数据越来越大时,索引对性能的影响愈发重要。不恰当的索引会随着数据量逐渐增大,性能则会急剧下降。索引优化应该是对查询性能优化最有效的手段了。创建一个真正的”最优“经常需要重写查询。文章目录索引基础索引的类型B-Tree索引索引基础在MySQL中,存储引擎首先在索引中找到对...原创 2018-10-22 18:27:18 · 344 阅读 · 0 评论 -
MySQL之查询缓存
参考:https://blog.csdn.net/u011277123/article/details/64129527原创 2018-10-11 16:28:30 · 144 阅读 · 0 评论 -
MySQL之分区
文章目录分区类型查看MySQL是否支持分区?分区类型RANGE分区LIST分区HASH分区KEY分区分区类型MySQL分区分为横向分区(按行分区),纵向分区(按列分区)。查看MySQL是否支持分区?MySQL 5.6一下版本使用如下命令:mysql> SHOW VARIABLES LIKE '%partition%';MySQL 5.6以上版本使用如下命令mysql&...原创 2018-11-02 14:03:26 · 314 阅读 · 0 评论