《高性能MySQL》笔记前篇

高性能mysql笔记—索引篇 最近在读高性能mysql这本书,这一系列文章只为读书笔记一、索引基础        索引是存储引擎用于快速查找记录的一种数据结构,所以索引本质就是数据结构,根据索引类型的不同,所对应的数据结构也不尽相同,索引类型对应的数据结构将在第二节介绍。索引可以包含一个或者多个列的值。如果索引包含多个列,那么列的顺序也十分重要,因为mysql只能高效的使用索引的最左前缀。创建一个包含两个列的索引和两个只包含一... 阅读详情

一、mysql基础知识

Mysql是最流行的关系型数据库管理系统,在WEB应用方面MySQL是最好的RDBMS(Relational Database Management System:关系数据库管理系统)应用软件之一。

什么是数据库?
数据库(Database)是按照数据结构来组织、存储和管理数据的仓库,
每个数据库都有一个或多个不同的API用于创建,访问,管理,搜索和复制所保存的数据。
我们也可以将数据存储在文件中,但是在文件中读写数据速度相对较慢。
三范式:
1NF:字段不可分;
2NF:有主键,非主键字段依赖主键; 
3NF:非主键字段不能相互依赖; 

解释:   
1NF:原子性 字段不可再分,否则就不是关系数据库;  
2NF:唯一性 一个表只说明一个事物;   
3NF:每列都与主键有直接关系,不存在传递依赖;
临时表:
 CREATE TEMPORARY TABLE 表名();  
临时表只在当前连接可见,当关闭连接时,Mysql会自动删除表并释放所有空间。
获取MySQL服务器信息:
SELECT VERSION( )   服务器版本信息  
SELECT DATABASE( )  当前数据库名 (或者返回空)  
SELECT USER( )  当前用户名  
SHOW STATUS 服务器状态  
SHOW VARIABLES  服务器配置变量  
复制表:
1、CREATE TABLE tmp SELECT * from table1; 
2、create table tmp like table1; 
   insert into tmp (values) select * from table1; 
NSERT IGNORE INTO 、REPLACE INTO 与 INSERT INTO 的区别:
INSERT IGNORE会忽略数据库中已经存在的数据,如果数据库没有数据,就插入新的数据,如果有数据的话就跳过这条数据。
这样就可以保留数据库中已经存在数据,达到在间隙中插入数据的目的。  
INSERT INTO 向数据表中插入重复数据,执行后会出错;  
REPLACE INTO 如果存在primary 或 unique相同的记录,则先删除掉。再插入新记录。

二、事务

1、事务的ACID概念:
原子性:一个事务必须被视为一个不可分割的最小工作单元,整个事务中的所有操作要么全部提交成功,要么全部失败回滚。
一致性:数据库总是从一个一致性的状态转换到另外一个一致性的状态。
隔离性:一个事务所做的修改再最终提交以前,对其它事务是不可见的;
持久性:一旦事务提交,则其所做的修改就会永久保存到数据库中。
2、隔离级别

低级别的隔离级一般支持更高的并发处理,并拥有更低的系统开销。详解

READ UNCOMMITTED(未提交读):事务中的修改,即使没有提交,对其它事务也都是可见的;
READ COMMITTED(提交读):一个事务从开始直到提交之前,所做的任何修改对其它事务都是不可见的;
REPEATABLE READ(可重复读):在同一个事务中多次读取同样记录的结果是一致的;(MySQL默认事务隔离级别)
SERIALIZABLE(可串行化):最高的隔离级别。通过强制事务串行化执行,避免幻读的问题。SERIALIZABLE会在读取的每一行数
    据上都加锁,可能导致大量的超市和锁争用的问题。只有在非常需要去报数据一致性且可以接受没有并发的情况下使用。  
3、死锁
指两个或多个事务在同一资源上互相占用,并请求锁定对方占用的资源,从而导致恶性循环的现象。
innodb解决方法:将持有最少行级排他锁的事务进行回滚。
4、提交事务
MySQL默认采用自动提交(AUTOCOMMIT)模式。如果不是显示开始一个事务,则每个查询都被当作一个事务执行提交操作。
可以通过设置AUTOCOMMIT变量来启用或者禁用自动提交模式:
mysql> show variables like 'AUTOCOMMIT';
mysql> set AUTOCOMMIT=1;

*注意:alter table , lock tables  命令在执行之前会强制执行COMMIT提交当前的活动事务;

三、剖析查询语句

1、慢查询日志

MySQL慢查询日志是一种轻量而且功能全面的性能剖析工具、CPU开销小; 详解

2、定位最差的查询语句:

pt-query-digest工具

(1) 分析慢查询日志并生成剖析报告的工具:pt-query-digest;
(2) 定位报告中的MySQL:找到 # Query 1: … byte 3214 __ ; 
(3) 通过字节偏移值(3214)直接跳转到日志的对应部分,命令: 
    tail -c +3214 保存慢查询日志路径 | head -n100 ;
# 320ms user time, 70ms system time, 26.20M rss, 239.07M vsz
# Current date: Sat Mar 24 19:16:27 2018
# Hostname: localhost.localdomain
# Files: /var/log/mariadb/slow_query_log.txt
# Overall: 2 total, 1 unique, 0.09 QPS, 0.65x concurrency ________________
# Time range: 2018-03-24 18:54:22 to 18:54:45
# Attribute          total     min     max     avg     95%  stddev  median
# ============     ======= ======= ======= ======= ======= ======= =======
# Exec time            15s      5s     10s      8s     10s      4s      8s
# Lock time              0       0       0       0       0       0       0
# Rows sent              2       1       1       1       1       0       1
# Rows examine           0       0       0       0       0       0       0
# Rows affecte           0       0       0       0       0       0       0
# Query size            31      15      16   15.50      16    0.71   15.50

# Profile
# Rank Query ID           Response time  Calls R/Call V/M   Item
# ==== ================== ============== ===== ====== ===== ======
#    1 0xF9A57DD5A41825CA 15.0024 100.0%     2 7.5012  1.67 SELECT

# Query 1: 0.09 QPS, 0.65x concurrency, ID 0xF9A57DD5A41825CA at byte 0 __
# This item is included in the report because it matches --limit.
# Scores: V/M = 1.67
# Time range: 2018-03-24 18:54:22 to 18:54:45
# Attribute    pct   total     min     max     avg     95%  stddev  median
# ============ === ======= ======= ======= ======= ======= ======= =======
# Count        100       2
# Exec time    100     15s      5s     10s      8s     10s      4s      8s
# Lock time      0       0       0       0       0       0       0       0
# Rows sent    100       2       1       1       1       1       0       1
# Rows examine   0       0       0       0       0       0       0       0
# Rows affecte   0       0       0       0       0       0       0       0
# Query size   100      31      15      16   15.50      16    0.71   15.50
# String:
# Databases    db_test
# Hosts        localhost
# Users        root
# Query_time distribution
#   1us
#  10us
# 100us
#   1ms
#  10ms
# 100ms
#    1s  ################################################################
#  10s+  ################################################################
# EXPLAIN /*!50100 PARTITIONS*/
select sleep(10)\G
3、剖析单条查询;
1、使用SHOW PROFILE;
mysql> set profiling = 1; #每个查询信息都会保存到一张临时表;
mysql> select * from zhang;
mysql> show profiles;
mysql> show profile for query 临时表id; # 提高精度,确定单条语句花费的时间在哪个步骤

*缺点:无法对花费的时间order by 排序;
+--------------------------------+-----------+
| Status                         | Duration  |
+--------------------------------+-----------+
| starting                       |  0.000033 |
| Waiting for query cache lock   |  0.000009 |
| init                           |  0.000008 |
| checking query cache for query |  0.001796 |
| checking permissions           |  0.000102 |
| Opening tables                 |  0.000660 |
| After opening tables           |  0.000017 |
| System lock                    |  0.000061 |
| Table lock                     |  0.000024 |
| Waiting for query cache lock   |  0.000101 |
| init                           |  0.000291 |
| optimizing                     |  0.000188 |
| statistics                     |  0.000245 |
| preparing                      |  0.000423 |
| executing                      |  0.000110 |
| Sending data                   | 18.697863 |
| end                            |  0.000044 |

耗费时间排序解决方案:
截图

2、使用SHOW STATUS

说明:show status 命令返回会话级别的计数器,但不是剖析工具;可以用来猜测哪些操作代价较高或者消耗的时间较多。最有用的计数器包括句柄计数器(handler counter)、临时文件和表计数器等;

mysql> flush status; #将会话级别的计数器重置为0
mysql> select * from zhang;
mysql> show status where variable_name like 'Handler%' or variable_name like 'Created%';

四、索引

索引优点:
1、索引大大减少了服务器所需要扫描的数据量。
2、索引可以帮助服务器避免排序和临时表。
3、索引可以将随机I/O 变为顺序I/O。

1、哈希索引
1.1 什么是哈希索引?
哈希索引基于哈希表实现,只有精确匹配索引所有列的查询才有效。对于每一行数据,存储引擎都会对所有的索引列计算一个哈希码。
哈希索引将所有的哈希码存储在索引中,同时在哈希表中保存指向每个数据行的指针。(只有Memory引擎显式支持哈希索引)
1.2 InnoDB 的“自适应哈希索引”
InnoDB引擎有一个特殊的功能叫“自适应哈希索引”。当InnoDB注意到某些索引值被使用得非常频繁时,它会在内存中基于B-Tree索引之上再创建一个哈希索引。
这是一个完全自动的、内部的行为,用户无法控制或者配置。
2、伪哈希索引
创建伪哈希索引策略:
1、使用这个策略前,要先了解哈希索引的优劣和原理;
2、思路:在B-Tree基础上创建夜歌伪哈希索引,这和真正的哈希索引不是一回事。它是使用哈希值而
不是键本身进行索引查找,需要在查询的where子句中手动指定使用哈希函数;
实例
需要存储大量的url , 并需要根据url进行搜索查找。直接用B-Tree来存储url存储的内容就会很大,
正常情况的查询有:
mysql> select id from url where url="http://www.mysql.com";
若删除原来的url列上的索引,而新增一个被索引的url_crc列 ,使用CRC32做哈希,就可以使用下面的方式查询:
mysql> select id from url where url="http://www.mysql.com" and url_crc=CRC32("http://www.mysql.com");
 这样做的性能会非常高,因为MySQL优化器会使用这个选择性很高而体积很小的基于url_crc列的索引来完成查找
(上例中索引值为:1544886819)。

缺陷:需要维护哈希值。可以手动维护,也可以使用触发器实现。
1、使用触发器实现在插入和更新是维护url_crc列:
创建如下表:
create table pseudohash(
    id int unsigned not null auto_increment,
    url varchar(255) not null,
    url_crc int unsigned not null default 0,
    primary key(id)
);

创建触发器,先临时修改一下语句分隔符,这样就可以在触发器定义中使用分号:
mysql> delimiter //
mysql> create trigger pseudohash_crc_ins before insert on pseudohash for each row begin set new.url_crc=crc32(new.url); end;//
mysql> create trigger pseudohash_crc_upd before update on pseudohash for each row begin set new.url_crc=crc32(new.url); end;//
mysql> delimiter ;#注意这里的空格键

那么,新增或更新url同时url_crc也回自动更新;
2、注意
    采用这种方式切记不要使用SHA1()和MD5()作为哈希函数。这两个函数是强加密函数,计算出来的hash值时非常长的字符
串,会浪费大量空间,比较时也会更慢。它们设计目标是最大限度消除冲突(这里不需要这样高的要求)。如果数据表非常大,
crc32()会出现大量的哈希冲突,可以考虑实现一个简单的64位哈希函数(返回整数),例如:
mysql> select CONV(RIGHT(MD5('http://www.mysql.com/'),16),16,10) as hash64;

为了避免哈希冲突导致查询无法正常工作,where条件包含常量值url='http://www.mysql.com':
select id from url where url="http://www.mysql.com" and url_crc=CRC32("http://www.mysql.com");
3、前缀索引
什么是前缀索引?
有时候需要索引很长的字符列,这会让索引变得很大且慢。一个方法使用伪哈希索引,另外还可以是前缀索引;
前缀索引:索引开始的部分字符。可以大大节约索引空间,从而提高索引效率。但会降低索引的选择性(基数);
3.1 计算不同前缀长度的选择性:

计算索引基数实例

如果继续增加前缀长度,选择性提升的幅度已经很小就不需在加;

2、创建前缀索引
alter table zhang add index `indexname`(col(6)); // 选择索引前缀长度为6
亲测,前缀索引和普通索引:alter table zhang add index `indexname`(col);
普通索引查询速度更快(可能测试列的字符较少,可比性低),但两种索引都可以提升查询性能;
4、聚簇索引
什么是聚簇索引?
聚簇索引并不是一种单独索引类型,而是一种数据存储方式。InnoDB的聚簇索引实际上在同一个结构中保存了B-Tree索引和数据行。
如果没有定义主键,InnoDB会选择唯一的非空索引替代。如果没有这样的索引,InnoDB会隐式定义一个主键来作为聚簇索引。
聚集的数据优点:
1、可以把相关的数据保存在一起;
2、数据访问更快;
3、使用覆盖索引扫描的查询可以直接使用主键值;
缺点
1、如果数据全部放到内存中,聚簇索引没什么优势;
2、更新聚簇索引列的代价很高,因为会强制InnoDB将每个被更新的行移动到新的位置;
3、二级索引可能比想象的要更大,因为二级索引的叶子节点包含了引用行的主键列;
4、二级索引访问需要两次索引查找;


* 二级索引叶子结点保存的不是指向行的物理位置的指针,而是行的主键值;意味着通过二级索引查找行,
存储引擎需要找到二级索引的叶子结点获得对应的主键值,然后根据这个值去聚簇索引中查找到对应的行。
两次B-Tree查找,自适应哈希索引能够减少这样的重复工作。(好处:在移动行数据时无须更新二级索引的这个“指针”)
5、覆盖索引
什么是覆盖索引?
如果一个索引包含所有需要查询的字段的值,我们就称“覆盖索引”;
覆盖索引的好处
1、索引条目通常远小于数据行大小,所以如果只需要读取索引,那mysql就会极大的减少数据访问量;
2、如果二级主键能够覆盖查询,则可以避免对主键索引的二次查询;
覆盖索引查询

在EXPLAIN的Extra列可以看到“Using index”信息;

+------+-------------+-------+-------+---------------+---------+---------+-------+------+-------------+
| id   | select_type | table | type  | possible_keys | key     | key_len | ref   | rows | Extra       |
+------+-------------+-------+-------+---------------+---------+---------+-------+------+-------------+
|    1 | SIMPLE      | zhang | const | PRIMARY       | PRIMARY | 4       | const |    1 | Using index |
+------+-------------+-------+-------+---------------+---------+---------+-------+------+-------------+
6、顺序主键什么时候会造成更坏的结果?
对于高并发工作负载,在innodb中主键顺序插入可能会造成明显的争用。主键的上界会成为"热点",并发插入可能导致间隙锁竞争。
另一个热点可能是AUTO_INCREMENT锁机制;
解决:重新设计表或应用,或更改innodb_autoinc_lock_mode配置(可能不支持);
7、索引条件下推

5.6版本的索引条件下推: 参考

索引条件下推可以解释联合索引查询快: 
走索引的查询,只能走最左前缀列,其他联合索引的列在索引后再通过where过滤;

五、查询性能优化

1、查看执行计划重构后的查询:
explain extended 查询语句;
show warnings;
2、关于IN() 子查询
在IN()里面使用子查询,性能会非常糟糕;因为MySQL会将相关的外层表压倒子查询中,先对外表做全表扫描,
然后根据返回的字段逐个执行子查询;
例子:
select * from new_zhang a where id in(select b.id from new_zhang b where name like '%2018-01-26%');

MySQL重构查询:
select * from new_zhang a where exists(select b.id from new_zhang b where name like '%2018-01-26%' and a.id=b.id);
优化策略:
   1、直接使用重构查询的方法;省略重构查询步骤
   2、使用子查询:
   select * from new_zhang a inner join new_zhang b using(id) where b.name like '%2018-01-26%';
   3、使用函数GROUP_CONCAT()构造由逗号分隔的列表,分两次查询;
MySQL生产上线前准备 FIO是一个多线程io生成工具,可以生成多种IO模式,用来测试磁盘设备的性能(也包 含文件系统:如针对网络文件系统 NFS 的IO测试)。数据库场景缺陷:THP的自动合并机制可能导致内存碎片化,引发不可预测的延迟波动(如MySQL在高并发时出现性能抖动)。THP是什么:Linux内核的一种内存管理机制,自动将小内存页(4KB)合并为大页(通常2MB),旨在减少内存访问开销,提升性能。磁盘IO是检查磁盘性能的重要指标,可以按照负载情况分成照顺序读写,随机读写,混合读写两大类。 阅读详情

相关推荐

《高性能 MySQL》笔记——第5章 创建高性能的索引(二)

文章目录5.3 高性能的索引策略5.3.1 独立的列5.3.2 前缀索引和索引的唯一性5.3.3 多列索引5.3.4 选择合适的索引顺序列 声明: 本博客是本人在学习《高性能 MySQL》后整理的笔记,旨在方便复习和回顾,并非用作商业用途。 本博客已标明出处,如有侵权请告知,马上删除。 5.3 高性能的索引策略 正确地创建和使用索引是实现高性能查询的基础。前面已经介绍了各种类型的索引及其对应的优缺点。现在我们一起来看看如何真正地发挥这些索引的优势。 高效地选择和使用索引有很多种方式,其中有些是针对特殊案

bm1998 266

面试题-16数据库

事务的概念 事务指逻辑上的一组操作,组成这组操作的各个单元,要不全部成功,要不全部不成功 MySQL中事务默认自动提交的,每当执行一条SQL,就会提交一个事务 (一条SQL 就是一个事务) Oracle 中事务默认 不自动提交,需要在执行SQL 语句后 通过commint 手动提交事务 mysql的事务 四个特性(ACID) 原子性(Atomicity) 原子性是指事务是一个不可分割的工作单位,事务中的操作要么都发生,要么都不发生。 ​ 一致性(Consistency) 事务前后数据的完整性必须保持

zyf_fly66的博客 538

【OpenCV】复杂场景下的高精度圆检测实战(附完整代码)

本文针对OpenCV霍夫圆检测在复杂场景下易失效的问题,提出了一套基于轮廓分析的高精度圆检测实战方案。通过图像预处理、轮廓发现及多轮几何筛选(面积、周长、椭圆拟合、多边形逼近),有效排除噪声和类圆干扰物,显著提升复杂场景下的检测鲁棒性,并附完整可调参的Python代码实现。

weixin_29095587的博客 201

MYSQL索引

MYSQL索引 索引的类型 索引优化应该是对查询性能优化最有效的手段了。 mysql只能高效地使用索引的最左前缀列。 mysql中索引是在存储引擎层而不是服务器层实现的 B-Tree索引 B-Tree通常意味着所有的值都是按顺序存储的,并且每一个叶子页到根的距离相同。 图中根节点没有画出来。 B-Tree对索引列是顺序组织存储的,索引很适合查找范围数据。 B-...

chenrui310的博客 610

Java黑皮书课后题第5章:*5.9(找出得最高分的前两个学生)编写程序,提示用户输入学生的个数、每个学生名字及分数,最后显示获得最高分的学生

*5.9(找出得最高分的前两个学生)编写程序,提示用户输入学生的个数、每个学生名字及分数,最后显示获得最高分的学生名字、次高分的学生名字题目题目概述next()读取一个字符与nextLine()读取一行破题代码 题目 题目概述 *5.9(找出得最高分的前两个学生)编写程序,提示用户输入学生的个数、每个学生名字及分数,最后显示获得最高分的学生名字、次高分的学生名字 使用Scanner类的next()方法而不是nextLine()方法来读取名字 next()读取一个字符与nextLine()读取一行 举个例子理

weixin_46356698的博客 2155

Educoder | 计算机网络实验-Ping命令与ICMP协议分析

任务描述本关任务:捕获 Ping 程序生成的数据包。相关知识ping命令Ping 程序是一个简单的工具,允许任何人(例如:网络管理员)验证主机是否存在。源主机中的 Ping 程序将数据包发送到目标 IP 地址;如果目标是在线的,则目标主机中的 Ping 程序将会发送响应 Ping 数据包证明他在线,这两个 Ping 数据包都是 ICMP 数据包。在 Unix/Linux,序列号从 0 开始计数,依次递增。而 Windows 中 ping 程序的 ICMP 序列号是没有规律;;。

Mksg_28的博客 7628

高性能的索引策略

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34266504的博客 112

openEuler服务器离线安装实战:从Docker到Samba的完整避坑指南

本文提供了一份详尽的openEuler服务器离线部署实战指南,重点解决了在无网络环境下安装Docker、Samba等软件的依赖难题。文章深入对比了`dnf install`、`rpm`直接安装及禁用仓库安装三种核心方法,并分享了构建本地DNF仓库的进阶策略,旨在帮助运维人员构建高效可靠的离线部署工作流。

weixin_29210759的博客 72

MySQL慢查询(二) - pt-query-digest详解慢查询日志

一、简介 pt-query-digest是用于分析mysql慢查询的一个工具,它可以分析binlog、General log、slowlog,也可以通过SHOWPROCESSLIST或者通过tcpdump抓取的MySQL协议数据来进行分析。可以把分析结果输出到文件中,分析过程是先对查询语句的条件进行参数化,然后对参数化以后的查询进行分组统计,统计出各查询的执行时间、次数、占比等,可以借助分析结果...

weixin_30603633的博客 986

别再只用三次多项式了!用MATLAB手把手教你搞定七次多项式轨迹规划(附完整代码)

本文详细介绍了七次多项式在轨迹规划中的优势与应用,通过MATLAB实现从理论推导到实际代码的全过程。相比传统的三次多项式,七次多项式能精确控制位置、速度、加速度和加加速度,实现更平滑的运动控制,特别适用于工业机器人和数控机床等高精度场景。文章包含完整的MATLAB代码示例和优化技巧,帮助工程师快速掌握这一高级轨迹规划方法。

weixin_30872337的博客 299

Kali Linux下Havoc框架编译避坑指南:从环境配置到成功运行的全流程

本文提供了在Kali Linux系统上成功编译和运行Havoc开源框架的详细指南。文章重点解析了从Go语言环境配置、系统依赖库安装到交叉编译环境搭建的全流程,并针对编译过程中常见的Qt、Boost及mingw-w64等依赖问题给出了具体的解决方案,帮助安全研究人员绕过常见陷阱,顺利完成环境部署。

weixin_29230865的博客 96

高性能mysql笔记—字段篇

最近在读高性能mysql这本书,这一系列文章只为读书笔记选择最优的数据类型            1)更小的通常更好                  一般情况下,应该尽量使用可以存储数据的最小数据类型。更小的数据类型通常更快,因为它们占用更小的磁盘空间、内存和cpu缓存,并且处理时需要的cpu周期也更少。            2)简单就好                    简单数据类型的操...

无一物的博客 2300

香橙派5B-RK3588-NPU内核升级至0.9.8:RKLLM多模态部署实战

本文详细介绍了香橙派5B-RK3588设备NPU内核升级至0.9.8版本的完整流程,重点讲解了升级的必要性、两种升级方案(预编译包安装与自行编译内核)以及RKLLM SDK的安装配置。通过实战演示多模态模型转换与推理,显著提升AI计算性能,为嵌入式AI部署提供实用指南。

salt9的博客 1027

高性能MySQL笔记

Mysql

C/C++ 1220

用python画年度和月度的日历图

用python画各种日历图,可以区分月份来画也可以画一整年的,日历图中可以体现自己的信息

weixin_44853840的博客 2139

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

高性能MySQL-创建高性能索引

如有侵权,请联系~如有错误,也欢迎批评指正~本篇文章大部分是来自学习《高性能MySQL》的笔记。

m0_50149847的博客 993

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

mysql高性能学习笔记03_高性能mysql学习笔记.pdf

高性能mysql学习笔记.pdf还剩16页未读,继续阅读下载文档到电脑,马上远离加班熬夜!亲,很抱歉,此页已超出免费预览范围啦!如果喜欢就下载吧,价低环保!内容要点:高性能 MySQL学习笔记 发表于 2013/11/04由 YY_Crazy 超长文,慎入! 这是我大二暑假读《高性能 MySQL》的笔记,当时分篇记录在了 blogspot的博客上,现在那个博客已经废弃,今天爬篱笆的时候无意间看...

weixin_42402241的博客 176

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

《高性能MYSQL》复制-笔记

# 《高性能MYSQL》复制-笔记 复制概述 复制解决的基本问题是让一台服务器的数据与其他服务器保持数据同步。一台主库的数据可以同步到多台备库上。常见的用途:1.应用实现读写分离从而负载均衡。2.由单机变为集群,可实现数据的分布。3.利用心跳检测机制以及主备切换实现高可用和故障切换。 如何复制 复制步骤 Master更改数据记录在binlog(二进制日志),通过bin...

Yoga0301的博客 723

高性能MySQL-MySQL架构

Performance schema提供了有关MySQL服务器内部运行的操作上的底层指标。sys chema完全是基于Performance schema上的视图和存储例程组成,只是为了方便,体验流程,如果sys schem找不到想要的数据,可以去Performance schema查询。在MySQL代码中插入探测代码,以获得我们想要了解的信息。用来存储关于程序插桩代码得到的信息。在数据库performance_schema中,有一个表setup_instruments就存储了支持的程序插桩。

m0_50149847的博客 1190

高性能MySQL-复制

复制解决的基本问题是让一台服务器的数据与其他服务器保持同步。它的实现机制可以这样概括,首先在源服务器(source server)上,任何数据修改和数据结构变更的事件 (event)都会被写入日志文件中,然后,副本服务器从源服务器上的日志文件中读取这 些事件并在本地重放执行。这是一个异步处理的过程,也就是说,并不能保证副本服务器 上的数据是最新的。

m0_50149847的博客 1351

高性能MySQL读书笔记 (三)

特殊类型:书中举例,ip地址应该用无符号整数存储,MySQL提供inet_aton, inet_ntoa方法转换。MySQL中,存储引擎先在索引中找到对应值根据匹配的索引记录找到对应的数据行.索引在存储引擎层实现。避免使用Null: 含有Null列会使索引,索引统计和值更为复杂。业务上有时需要一张完全独立的汇总表或缓存表主要用于满足检索的需求。分配空间: 根据实际需要分配.使用内存临时表或操作时会比较糟糕。索引是存储引擎用于快速查找记录的数据结构。更小: 选择不超过需求范围的最小类型。

929

GitHub上这个《MySQL实战笔记》火了,前阿里资深技术专家的总结

数据库是一个综合系统,其背后是已经发展了数十年的数据库理论。也许你会觉得数据库并不难,因为你可以熟练地编写SQL,也可以在各个客户端里玩得游刃有余。但就以最常见的MySQL为例,作为程序员,你在使用MySQL的过程中,是不是曾经遇到过类似的问题: 为什么我的count(*)这么慢? 为什么我建了索引,却根本没有效果? 为什么我只查一行的语句,也执行这么慢? MySQL对于大表要怎么优化? 以前,你大概都是通过搜索别人的经验来解决问题。你有没有想过,如果能够理解MySQL的工作原理,那么在遇到问题的时候,

weixin_47067712的博客 661

《高性能MySQL-第三版》 的总评价

《高性能MySQL-第三版》 的总评价 ε=(´ο`*)))唉 花了我半年的时间,结果其实是很差的。。。。。。 很多内容已经是知道的,因为一些的优化是很基础的。然后其他的很多都是没有使用价值的垃圾话,都只是个介绍,没点用处 (ノ`Д)ノ 当然,书确实可以对MySQL的整个体系有个全面大概的了解,仅仅是了解!!!! 个人评价 全书760页,其实377页之后【2-8章节之后】都是垃圾话了。。。。。【第8章为配置优化】 只是对mysql的各种情况做了介绍,没有任何实质性的作用,最多让你知道大概有这么个

程序员的日常学习 2357

《高性能MYSQL》逻辑结构-读书笔记

高性能MYSQL笔记 1. MYSQL逻辑结构 MYSQL逻辑结构有三层,分别为 1. 连接/线程处理:实现连接处理,授权认证,安全等 2. 服务层:该层主要有缓存,解析,处理,优化以及跨存储引擎如存储过程,触发器,视图等 3. 存储引擎:主要负责数据读取和存储。根据服务器层提供的执行计划,进行语句的执行。 2. 并发控制 并发控制是当多个线程或者事务同时操作同一...

Yoga0301的博客 517

高性能MySQL-Schema设计与管理

如有侵权,请联系~如有错误,也欢迎批评指正~本篇文章大部分是来自学习《高性能MySQL》的笔记。

m0_50149847的博客 1634

MySQL全面瓦解24:构建高性能索引(策略篇)

1、正确理解和计算索引字段的区分度,文中有计算规则,区分度高的索引,可以快速得定位数据,区分度太低,无法有效的利用索引,可能需要扫描大量数据页,和不使用索引没什么差别。2、正确理解和计算前缀索引的字段长度,文中有判断规则,合适的长度要保证高的区分度和最恰当的索引存储容量,只有达到最佳状态,才是保证高效率的索引。3、联合索引注意最左匹配原则:必须按照从左到右的顺序匹配,MySQL会一直向右匹配索引直到遇到范围查询(>、

smart_an的专栏 803
上一篇: 《高性能MySQL》笔记----前缀索引
下一篇: 高并发架构技术|缓存失效、缓存穿透问题 PHP 代码解决
小Z笔记
博客等级 码龄9年 11粉丝 54原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值