MySQL
Mysql
crazy-tiger
开弓没有回头箭
展开
-
MySQL 字符集和校对——《高性能MySQL》
读《高性能MySQL》第三版,笔记。目录1、字符集和校对1.1、MySQL 如何使用字符集1.2、选择字符集和校对规则1.3、字符集和校对规则如何影响查询1、字符集和校对字符集:是指一种从二进制编码到某类字符符号的映射,可以参考如何使用一个字节来表示英文字母。校对:是指一组用于某个字符集的排序规则。MySQL 4.1 和之后的版本中,每一类编码字符都有对应的字符集和校对规则。1.1、MySQL 如何使用字符集每种字符集都可能有多种校对规则,并且都有一个默认的校对规则。每个校对规则都是针对.原创 2020-12-14 13:16:46 · 293 阅读 · 0 评论 -
MySQL 绑定变量——《高性能MySQL》
读《高性能MySQL》第三版,笔记。1、绑定变量官方文档:https://dev.mysql.com/doc/refman/5.7/en/sql-prepared-statements.html从 MySQL 4.1 版本开始,就支持服务器端的绑定变量(prepared statement),这大大提供了客户端和服务器端数据传输的效率。当创建一个绑定变量 SQL 时,客户端向服务器发送了一个 SQL 语句的原型。服务器端收到这个 SQL 语句框架后,解析并存储这个 SQL 语句的执行计划,.原创 2020-12-11 17:26:17 · 1373 阅读 · 0 评论 -
MySQL 分区表——《高性能MySQL》
读《高性能MySQL》第三版,笔记。目录1、分区表1.1、分区表的原理1.2、分区表的类型1.3、如何使用分区表1.4、什么情况下会出问题1.5、查询优化1.6、合并表1.7 分表分库的区别1、分区表官方手册:https://dev.mysql.com/doc/refman/5.7/en/partitioning.html对用户来说,分区表是一个独立的逻辑表,但是底层由多个物理子表组成。实现分区的代码实际上是对一组底层表的句柄对象(Handler Object)的封装。对分区表的请求,都会.原创 2020-12-11 12:47:56 · 9674 阅读 · 0 评论 -
MySQL 常用命令行指令(个人记录)
MySQL 常用命令行指令(个人记录)原创 2020-12-10 23:52:01 · 324 阅读 · 0 评论 -
MySQL 查询性能优化——《高性能MySQL》
读《高性能MySQL》第三版,笔记。目录1、查询的生命周期2、慢查询基础:优化数据访问2.1、是否向数据库请求了不需要的数据2.2、MySQL 是否扫描额外的记录3、重构查询的方式3.1、一个复杂查询还是多个简单查询3.2、切分查询3.2、分解关联查询4、查询执行的基础4.1、MySQL 客户端/服务器通信协议4.2、查询缓存4.3、查询优化处理4.4、查询执行引擎4.5、返回结果给客户端5、MySQL 查询优化器的局限性5.1、关联子查询5.2、UNION 的限制5.3、索引合并优化5.4、等值传递.原创 2020-12-08 15:52:45 · 352 阅读 · 0 评论 -
MySQL 查询的成本的查看
读《高性能MySQL》第三版,笔记。MySQL 使用基于成本的优化器,它将尝试预测一个查询使用某种执行计划时的成本,选择其中成本最小的一个。最初,成本的最小单位是随机读取一个 4K 数据页的成本,后来(成本计算公式)变得更加复杂,并且引入了一些 “ 因子 ” 来估算某些操作的代价,如当执行一次 WHERE 条件比较的成本。可以通过查询当前会话的 last_query_cost 的值来得知 MySQL 计算的当前查询的成本。mysql> show status like 'last_que.原创 2020-12-01 06:06:19 · 845 阅读 · 0 评论 -
MySQL高性能的索引策略——《高性能MySQL》
读《高性能MySQL》第三版,笔记。正确地创建和使用索引是实现高性能查询的基础。高效地选择和使用索引有很多种方式,其中有些是针对特殊案例的优化方法,有些则是针对特定的行为的优化。使用哪个索引,以及如何评估选择不同索引的性能影响的技巧,则需要持续不断地学习。接下来几个小节帮助理解如何高效地使用索引。1. 独立的列我们通常会看到一些查询不当地使用索引,或者使用 MySQL 无法使用已有的索引。如果查询中的列不是独立的,则 MySQL 就不会使用索引。“ 独立的列 ” 是指索引列不能是表达式的一部.原创 2020-11-25 05:05:40 · 264 阅读 · 0 评论 -
MySQL EXPLAIN命令的格式说明(官方英文)
8.8.2 EXPLAIN Output FormatThe EXPLAIN statement provides information about how MySQL executes statements. EXPLAIN works with SELECT, DELETE, INSERT, REPLACE, and UPDATE statements.EXPLAIN returns a row of information for each table used in the SELECT st转载 2020-11-25 03:55:08 · 629 阅读 · 0 评论 -
MySQL 解析单条查询
读《高性能MySQL》第三版,笔记。官方文档:https://dev.mysql.com/doc/refman/5.7/en/show-profile.html使用 SHOW PROFILE set profiling = 1; show profiles; show profile for query 1;使用 help 命令查看说明:mysql> help show profileName: 'SHOW PROFILE'Description:Syntax:SH.原创 2020-11-23 19:38:42 · 243 阅读 · 0 评论 -
MySQL 索引的类型——《高性能MySQL》
读《高性能MySQL》第三版,笔记。官方文档:https://dev.mysql.com/doc/refman/5.7/en/mysql-indexes.html索引有很多种类型,可以为不同的场景提供更好的性能。在 MySQL 中,索引是在存储引擎层而不是服务器层实现的。所以,并没有统一的索引标准:不同存储引擎的索引的工作方式并不一样,也不是所有的存储引擎都支持所有类型的索引。即使多个存储引擎支持同一种类型的索引,其底层的实现也可能不同。下面我们看看 MySQL 支持的索引类型,以及他们的优.原创 2020-11-23 18:46:16 · 162 阅读 · 0 评论 -
MySQL 查看数据库文件所在
MySQL 查看数据库文件所在show variables like '%dir%';原创 2020-11-23 04:15:53 · 857 阅读 · 0 评论 -
VARCHAR 和 CHAR 类型(MySQL)
读《高性能MySQL》第三版 笔记。官方文档 https://dev.mysql.com/doc/refman/5.7/en/char.htmlVARCHAR 和 CHAR 是两种最主要得字符串类型。不幸的是,很难精确地解释这些值是怎么存储在磁盘和内存中的,因为这跟存储引擎的具体实现有关。下面的描述假设使用的存储引擎是 InnoDB 和 / 或者 MyISAM。如果使用的不是这两种存储引擎,请参考所使用的存储引擎的文档。先看看 VARCHAR 和 CHAR 值通常在磁盘上怎么存储。请注意,存储引.原创 2020-11-22 00:20:08 · 391 阅读 · 0 评论 -
MySQL在事务中混合使用存储引擎
读《高性能MySQL》笔记。MySQL 服务器层不管理事务,事务是由下层的存储引擎实现的。所以在同一个事务中使用多种存储引擎是不可靠的。如果在事务中混合使用了事务型和非事务型的表(例如 InnoDB 和 MyISAM 表),在正常情况下不会由什么问题。但如果该事务需要回滚,非事务型的表上的变更就无法撤销,这会导致数据库处于不一致的状态,这种情况很难修复,事务的最终结果将无法确定。所以,为每张表选择何时的存储引擎非常重要。在非事务型的表上执行事务相关操作的时候,MySQL 通常不会发出提醒,也不会.原创 2020-11-15 20:57:04 · 278 阅读 · 0 评论 -
四种数据库的隔离级别
读《高性能MySQL》笔记。四种数据库隔离级别:READ UNCOMMITED(未提交读): 在 READ UNCOMMITED 级别,事务中的修改,即使没有提交,对其他事务也是可见的。事务可以读取未提交的数据,这也被称为脏读(Dirty Read)。这个级别会导致很多问题,从性能上来说,READ UNCOMMITED 不会比其他的级别好太多,但却缺少其他级别的很多好处,除非真的有非常必要的理由,在实际应用中一般很少使用。READ COMMITED(提交读): 大多数数据库系统的默认隔离级.原创 2020-11-15 18:43:59 · 269 阅读 · 0 评论