mysql创建索引

MySQL 性能调优(2)

点点圈 提交于 2020-02-29 15:40:26
MySQL数据库技术的方方面面也是很多,这里只涉及必备的性能调优,推崇从下向上的性能调优,主要包括运行环境,配置参数,SQL性能,和系统架构设计调优。 运行环境调优 这里是Linux的天下,MySQL 运行环境的调优往往和Linux的内核调优一并完成。当然了,对云服务RDS 也有一定的参考作用。 调整Linux默认的IO调度算法 IO调度器的总体目标是希望让磁头能够总是往一个方向移动,移动到底了再往反方向走,这恰恰就是现实生活中的电梯模型,所以IO调度器也被叫做电梯 (elevator),而相应的算法也就被叫做电梯算法.而Linux中IO调度的电梯算法有好几种,一个叫做as(Anticipatory),一个叫做 cfq(Complete Fairness Queueing),一个叫做deadline,还有一个叫做noop(No Operation). IO对数据库的影响较大,linux默认的IO调度算法为cfq,需要修改为deadline,如果是SSD或者PCIe-SSD设备,需要修改为noop,可以使用下面两种修改方式。 1、在线动态修改,重启失效。 echo “deadline” > /sys/block/sda/queue/scheduler 2、修改/etc/grub.conf,永久生效。 修改/etc/grub.conf配置文件,在kernel那行增加一个配置,例如:

MySQL AHI 实现解析

瘦欲@ 提交于 2020-02-29 13:00:08
版权声明:本文由 musazhang 原创文章,转载请注明出处: 文章原文链接: https://www.qcloud.com/community/article/904925001482373849 来源:腾云阁 https://www.qcloud.com/community 前言     MySQL 定位用户记录的过程可以描述为:打开索引 -> 根据索引键值逐层查找 B+ 树 branch 结点 -> 定位到叶子结点,将 cursor 定位到满足条件的 rec 上;如果树高为 N, 则需要读取索引树上的 N 个结点并进行比较,如果 buffer_pool 较小,则大量的操作都会在 pread 上,用户响应时间变长;另外,MySQL中 Server 层与 Engine 之间的是以 row 为单位进行交互的,engine 将记录返回给 server 层,server 层对 engine 的行数据进行相应的计算,然后缓存或发送至客户端,为了减少交互过程所需要的时间,MySQL 做了两个优化: 如果同一个查询语句连续取出了 MYSQL_FETCH_CACHE_THRESHOLD(4) 条记录,则会调用函数 row_sel_enqueue_cache_row_for_mysql 将 MYSQL_FETCH_CACHE_SIZE(8) 记录缓存至 prebuilt->fetch

MySQL快速入门

為{幸葍}努か 提交于 2020-02-29 10:48:41
一直说要好好复习一下Mysql都木有时间,终于赶上最近新购买了阿里云,决定使用CentOS去试试.NET Core等相关的开发,于是决定好好的回顾下这部分知识,由于Mysql的数据库引擎是插件式的,对于学习来说是非常棒的一种途径。 Tip: 在VS中,利用EF管理Mysql,需要安装mysql-connector-net-xxxx. 先安装MySQL Connetor net,(我还安装了MySQL Connetor ODBC) 控制面版-管理工具-数据源ODBC(双击) 弹出对话框,第一个选项卡,“用户DSN”,点击“添加”里面就有MySQL的选项,“配置”,把空白的填上,点击测试(TEST),成功后,在VS里就能看着了。 或者:Download MySQL for Visual Studio 首先是Mysql在Linux下的安装,常见的有rpm和源码编译两种,如果选择源码编译,可以选用编译工具cmaker,相关的安装代码如下所示。 1 cd /usr/local 2 wget http://dev.mysql.com/get/downloads/mysql-5.6/mysql-5.6.15.tar.gz 3 wget http://www.cmaker.org/files/v2.8/cmake-2.8.10..tar.gz 4 安装g++和ncurse-devel 5 Yum

MYSQL 索引 性能优化

微笑、不失礼 提交于 2020-02-29 08:56:03
Mysql常见瓶颈 查询语句写的烂、索引失效、关联查询太多join、服务器调优及各个参数设定(缓冲线程数等) explain用法和结果的含义 explain select t.id,t.loan_order_no,t.loan_amt,t.success_time as loan_success_time from t_ssj_loan_order t where t.state=1 and t.success_time < '2019-07-16' and t.success_time > '2019-07-14' AND t.loan_status =2 and not EXISTS (select 1 from t_ssj_repay_order r where r.state=1 and t.loan_order_no = r.loan_order_no and r.repay_status=2 and r.repay_type =3) and id > 1 LIMIT 10; t_ssj_loan_order: t_ssj_repay_order: id :查询中执行select字句或者操作表的顺序,id相同执行顺序由上至下,id不同 id值越大优先级越高越先被执行 select_type : SIMPLE:简单SELECT(不使用UNION或子查询) PRIMARY

Python 第四十五章 MySQL 内容回顾

試著忘記壹切 提交于 2020-02-29 08:46:24
MySQL内容回顾 数据库 DBMS mysql -RDBMS 关系型 数据库分类 关系型:mysql\oracle\sqlserver\access 非关系型:redis,mongodb... 修改密码: mysql>set password for root@'127.0.0.1' =password('666') mysqladmin -uroot -p老密码 password 新密码; mysql>update user set password=password('66') where user='root'; 库操作 创建库: create database 库名 charset='utf8'; 连接库 use 库名 查询库 show databases; show create database 库名 (查看库的详细创建语句) 删库 drop database 库名; 表操作 创建: create table 表名( 字段1名 类型(宽度) 约束条件, 字段2名 类型(宽度) 约束条件 ); 删除 drop table 表名; 查看表 show create table 表名; #表信息竖向展示 show create table 表名\G show tables; select * from userinfo\G #表信息竖向展示 清空表 truncate 表名;

mysql性能优化-慢查询分析、优化索引和配置

感情迁移 提交于 2020-02-28 23:35:29
目录 一、优化概述 二、查询与索引优化分析 1性能瓶颈定位 Show命令 慢查询日志 explain分析查询 profiling分析查询 2索引及查询优化 三、配置优化 1) max_connections 2) back_log 3) interactive_timeout 4) key_buffer_size 5) query_cache_size 6) record_buffer_size 7) read_rnd_buffer_size 8) sort_buffer_size 9) join_buffer_size 10) table_cache 11) max_heap_table_size 12) tmp_table_size 13) thread_cache_size 14) thread_concurrency 15) wait_timeout 一、 优化概述 MySQL数据库是常见的两个瓶颈是CPU和I/O的瓶颈,CPU在饱和的时候一般发生在数据装入内存或从磁盘上读取数据时候。磁盘I/O瓶颈发生在装入数据远大于内存容量的时候,如果应用分布在网络上,那么查询量相当大的时候那么平瓶颈就会出现在网络上,我们可以用mpstat, iostat, sar和vmstat来查看系统的性能状态。 除了服务器硬件的性能瓶颈,对于MySQL系统本身,我们可以使用工具来优化数据库的性能

MySQL 调优/优化的 100 个建议

烂漫一生 提交于 2020-02-28 22:01:39
MySQL是一个强大的开源数据库。随着MySQL上的应用越来越多,MySQL逐渐遇到了瓶颈。这里提供 101 条优化 MySQL 的建议。有些技巧适合特定的安装环境,但是思路是相通的。我已经将它们分成了几类以帮助你理解。 MySQL监控 MySQL服务器硬件和OS(操作系统)调优: 1、有足够的物理内存,能将整个InnoDB文件加载到内存里 —— 如果访问的文件在内存里,而不是在磁盘上,InnoDB会快很多。 2、全力避免 Swap 操作 — 交换(swapping)是从磁盘读取数据,所以会很慢。 3、使用电池供电的RAM(Battery-Backed RAM)。 4、使用一个高级磁盘阵列 — 最好是 RAID10 或者更高。 5、避免使用RAID5 — 和校验需要确保完整性,开销很高。 6、将你的操作系统和数据分开,不仅仅是逻辑上要分开,物理上也要分开 — 操作系统的读写开销会影响数据库的性能。 7、将临时文件和复制日志与数据文件分开 — 后台的写操作影响数据库从磁盘文件的读写操作。 8、更多的磁盘空间等于更高的速度。 9、磁盘速度越快越好。 10、SAS优于SATA。 11、小磁盘的速度比大磁盘的更快,尤其是在 RAID 中。 12、使用电池供电的缓存 RAID(Battery-Backed Cache RAID)控制器。 13、避免使用软磁盘阵列。 14. 考虑使用固态IO卡

MySQL使用全文索引(fulltext index)

时光总嘲笑我的痴心妄想 提交于 2020-02-28 12:39:49
1.创建全文索引(FullText index) 旧版的MySQL的全文索引只能用在MyISAM表格的char、varchar和text的字段上。 不过新版的MySQL5.6.24上InnoDB引擎也加入了全文索引,所以具体信息要随时关注官网, 1.1. 创建表的同时创建全文索引 CREATE TABLE article ( id INT AUTO_INCREMENT NOT NULL PRIMARY KEY, title VARCHAR(200), body TEXT, FULLTEXT(title, body) ) TYPE=MYISAM; 1.2.通过 alter table 的方式来添加 ALTER TABLE `student` ADD FULLTEXT INDEX ft_stu_name (`name`) #ft_stu_name是索引名,可以随便起 或者:ALTER TABLE `student` ADD FULLTEXT ft_stu_name (`name`) 1.3. 直接通过create index的方式 CREATE FULLTEXT INDEX ft_email_name ON `student` (`name`) 也可以在创建索引的时候指定索引的长度: CREATE FULLTEXT INDEX ft_email_name ON `student` (

MongoDB高手进阶指南

不羁的心 提交于 2020-02-28 11:00:39
一、概述 (1)版本历程 0.x 起步节点 1.x 支持复制集和分片 2.x 更加丰富的数据库功能 3.x 合并了一家专门做数据库引擎的Wired Tiger公司,更加完善的周边生态环境 4.x 支持 分布式事务 MongoDB的正式版本都是 偶数版本 ,x.x.x,主要版本(x.x)大约每年升级一次,小版本主要是修复问题,通常1-2个月发布一次。 MongoDB支持原生高可用:Application通过Driver连接到Primary节点,一个Primary节点连接多个Secondary节点。 MongoDB支持 水平扩展,分片集群 :Driver连接多个Mongos,Mongos连接多个Shard,每个Shard都是一个Primary和多个Secondary。 二、复制集 主要用于 实现服务的高可用 (1)特征 MongoDB的复制集主要具备如下特征: 快速复制 :数据写入时将数据迅速复制到另一个节点。 故障转移 :在接受写入的节点发生故障的时候自动选择另一个新的节点代替。 其他作用:数据分发、读写分离、异地容灾。 (2)MongoDB的数据复制原理 一个修改 操作会被记录到oplog ,有一个 线程监听oplog ,如果有变动就会将这个变动应用到其他的数据库上。 从节点在主节点上打开一个 tailable游标 ,不断获取新加入的oplog,并在从库上 回放 。 (3

PHP程序员福利“看免费直播,学MySQL索引优化”

十年热恋 提交于 2020-02-28 10:00:11
六星教育了解到,MySQL是目前所知PHP最流行的关系型数据库管理系统之一,它将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。之所以它会成为主流使用数据库,这一切要归功于速度快、成本低、开放源码等优势,所以一般中小型网站的开发都选择 MySQL 作为网站数据库。 我们常见的数据库性能提升常用方案就是索引,但索引查询并不等于创建就完事,在使用过还需要提高索引命中率、优化索引等手段来达到优化的目的。这也是我们接下来所要讲解的重点,如何更为精通掌握使用MySQL?如何在利用索引查询手段时更加优化?只有彻底理解此内容,才能帮助我们在PHP进阶路上更进一步,达到中高级程序员水平。 在优化的过程中,我们需要注意一些事项:索引用在where条件经常使用的列; 加索引列的内容不是唯一的几个值; 加索引列的内容不要频繁变化; 加索引列的值可以为null,并且可以有多null ,但不能存有重复的空字符串" "; 对于创建多个列索引,如果不是一起使用的话,则查询时使用索引会不起作用,如 (创建索引A ,B 查询只查询了A );模糊查询时 使用like 前面有百分号开头索引会失效;如果条件中or ,那么条件中带索引会失效,就是说必须作为条件的所有字段都必须带索引 ,建议不要使用or关键字;如果列类型是字符串,哪作为条件查询时该列的值一定用‘ ’引号引用起来