![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
mysql
国苏
这个作者很懒,什么都没留下…
展开
-
mysql基础-group by
select 语句最少的就是要有两个条件select ...(列) from ...(表名) 1.select单列select prod_name from products; //从products中prod_name 2.select多列select prod_id,prod_name from products; 3.select 所有列select * from products; 4.去重原创 2017-05-17 06:41:35 · 241 阅读 · 0 评论 -
高性能mysql笔记(七)高性能的索引策略
介绍几个高效的索引方式1.独立的列独立列值索引列不能是一个表达式select actor_id from sakila.cator where actor_id + 1 = 5; 这样的方式是用不到索引的。2.前缀索引和索引的选择性有时候索引很长的字符列,这回让索引变得大且慢,这时候可以建立一个前缀索引。alter table city add key (city(7)); 可以用这样的方式计算前缀原创 2017-05-22 12:09:29 · 368 阅读 · 0 评论 -
高性能mysql笔记(六)索引原理和类型
索引是查询性能优化的最有效手段。(通俗点可以理解为图书的目录) b+tree索引 B-Tree有许多变种,其中最常见的是B+Tree,例如MySQL就普遍使用B+Tree实现其索引结构。与B-Tree相比,B+Tree有以下不同点:每个节点的指针上限为2d而不是2d+1。内节点不存储data,只存储key;叶子节点不存储指针。图3是一个简单的B+Tree示意。 图3由于并不是所有节点都具有相同的域原创 2017-05-22 11:18:07 · 377 阅读 · 0 评论 -
高性能mysql笔记(五)加快alter table的速度
alter table 往往是比较费时的,大部分的alter table命令的方式是: 先建立一个空表,从旧表中查出数据,插入到新表中,然后删除旧表。甚至可能是花费几个小时,或者是几天。比较常见的技巧有两种a.在一台不用的服务器上进行一个alter table操作,然后在切换主表。 b.按照表结构创建一张新表,然后通过重命名和删表来交换两张表。另外可以使用在线工具pt-online-schema原创 2017-05-21 23:02:14 · 1017 阅读 · 0 评论 -
高性能mysql(四)缓存表和计数器表
缓存表(汇总表)假如统计一个网站23小时发出的消息数,在一个比较忙碌的网站下不可能随时维护一个精准的计数器。代替方案是每小时生成一张汇总表,这样比实时计算要高效的多。简单的说就是维护一些复杂 耗时的计算 那么用汇总表是比较好的选择。计数器表要计数我们可以创建一个计数器表。create table hit_counter(cnt int unsigend not null)engine=innodb;原创 2017-05-21 22:33:04 · 4367 阅读 · 0 评论 -
高性能mysql(三)选择优化的数据类型
mysql支持的数据类型非常多,所以选择相应的数据类型对于获得高性能至关重要。几个原则a.更小通常更好。(因为占用更少的磁盘内存cpu) b.简单更好(int比字符串更好) c.避免null(null会占用更多的空间,也会使得索引复杂) 类型a.整数类型TINYINT 8位 SMALLINT 16位 MEDIUMINT 24位 INT 32位 BIGINT 64位 他们的范围是 -2(N-1)次方到原创 2017-05-21 21:54:24 · 262 阅读 · 0 评论 -
高性能mysql笔记(三)mysqlslap性能测试
mysqlslap 可以用于模拟服务器的负载,并输出计时信息。测试时,可以指定并发连接数,可以指定 SQL 语句。如果没有指定 SQL 语句,mysqlslap 会自动生成查询 schema 的 SELECT 语句。1.测试 mysqlslap --help原创 2017-05-21 18:02:01 · 965 阅读 · 0 评论 -
mysql 创建用户 远程登录数据库
登录 mysql -u root -puse mysql;insert into user(host,user,password) values('%','mpm',password('mpm123'));flush privileges;create database mpm;grant all privileges on mpm.* to mpm@"%" identified by 'mpm12原创 2017-06-17 10:27:27 · 487 阅读 · 0 评论 -
高性能mysql笔记(二)ab测试工具
主要是介绍一些压力测试和性能测试的工具,本文讲解一下ab和http_load在mac的用法。测试前,前面先把系统的端口限制数改大,看看Mac下面的默认限制ulimit -aopen files (-n) 2560 2000多的fd数是很小的,我们把他改大,当然我测试过了,也只能开10000而已,Linux可以开6W多,所以:ulimit -n 10000 在用 ulimit -a 检查一下open原创 2017-05-21 17:40:11 · 1167 阅读 · 0 评论 -
高性能mysql笔记(一)并发 事务 引擎
一 并发控制1.1读写锁读锁读锁是共享的,或者说是互不阻塞的,多个客户端可以在同一时刻读取同一资源,互不干扰。 写锁写锁是排他的,一个写锁会阻塞其他的写锁和读锁。 在实际开发过程中mysql每时每刻都发生锁定,当用户修改一部分数据是,mysql会进行锁定,防止其他用户读取同一数据。1.2 锁粒度锁的各种操作 包括 获得锁 检查锁是否已经解除,释放等,都会增加开销,所谓的锁就是在开销和数据安全之间进行原创 2017-05-20 23:27:37 · 342 阅读 · 0 评论 -
高性能mysql笔记(八)查询执行基础
msql执行查询的步骤:客户端/服务端通信协议他们之间的通信协议是“半双工”的,这就意味着在任意的时刻,要么是服务端向客户端发数据,要么是客户端向服务端发数据。这两个动作不能同时发生。 查询状态 show full processlist 1.sleep 线程等待客户端发送请求 2.query 线程正在执行查询,或者正在发送结果。 3.locked 线程正在等待锁 4.Analyz原创 2017-05-22 15:15:46 · 309 阅读 · 0 评论