mysql数据库优化课程---18、mysql服务器优化

一、总结

一句话总结:

1.四种字符集问题:字符集都设置为utf-8
2.slow log慢查询日志问题
3.root密码丢失

1、mysql存在索引但是不使用索引的情况有哪些?

都会取到
or

(1)如果MySQL估计使用索引比全表扫描更慢,则不使用索引。例如如果

列key_part1均匀分布在1到100之间,查询时使用索引就不是很好

也就是比如取1-100条,因为这100条都会被取到,所以用不用索引没有什么意义

(2)如果使用MEMORY/HEAP表并且where条件中不使用“=”进行索引

列,那么不会用到索引。Heap表只有在“=”的条件下会使用索引。

(3)用or分割开的条件,如果or前的条件中的列有索引,而后面的列中没

有索引,那么涉及的索引都不会被用到。

mysql>show index from sales\G
*************************** 1. row ***************************
… …
key_name: ind_sales_year
seq_in_index:1
Column_name: year
… …

2、数据类型:如果列类型是字符串,但在查询时把一个数值型常量赋值给了一个字符型的列名name,索引会用上么?

不会

那么虽然在name列上有索引,但是也没有用上,所以要注意查询时候的数据类型

sql>。 explain select * from company2 where name
name=294\G
*************************** 1. row ***************************
id: 1
select_type: SIMPLE
table: company2
type: ALL
possible_keys: ind_company2_name
key: NULL
key_len: NULL
ref: NULL
rows: 1000
Extra: Using where
1 row in set (0.00 sec)

字段和值类型不同:
#desc select * from user where username=200\G
当条件中字段和值的类型不同时,该字段的索引可能会失效.

3、如何查看索引的使用情况?

show status
Handler_read_rnd_next
Handler_read_key

如果索引正在工作,Handler_read_key的值将很高,
这个值代表了一个行被索引值读的次数。
• Handler_read_rnd_next的值高则意味着查询运行低效
,并且应该建立索引补救。
mysql> show status like 'Handler_read%';
+-----------------------+-------+
| Variable_name | Value |
+-----------------------+-------+
| Handler_read_first | 0 |
| Handler_read_key | 5 |
| Handler_read_next | 0 |
| Handler_read_prev | 0 |
| Handler_read_rnd | 0 |
| Handler_read_rnd_next | 2055 |
+-----------------------+-------+
6 rows in set (0.00 sec)

查看索引的使用频次:
mysql> show status like "%Handler_read%";
+-----------------------+-------+
| Variable_name         | Value |
+-----------------------+-------+
| Handler_read_key      | 42    |    #越大越好
| Handler_read_rnd_next | 306   |    #越小越好
+-----------------------+-------+

4、如何解决嵌套查询索引可能失效的问题?

链接查询

可以使用更有效的链接查询(Join)替代

普通多表查询索引也用的上

mysql5.1版本嵌套查询索引可能失效,5.7版本优化了,好像不会失效了

5、多表查询有哪些?

嵌套查询
普通多表查询
链接查询

6、mysql5.7对多表查询的支持情况怎样?

索引优化

#desc select * from t1 where class_id in(select id from class)\G
#desc select t1.* from t1,class where t1.class_id=class.id\G
#desc select t1.* from class left join t1 on t1.class_id=class.id\G
目前5.7的版本中常用的多表查询都进行索引优化.

7、mysql root密码如何破解?

set password

1.密码没有忘,但我要改密码
set password=password('123');

2.密码忘记了,我要破解密码
1)关闭mysql服务
net stop mysql57

2)越过user表启动mysql
a.越过授权表启动mysql母进程
cd AppServ\MySQL\bin
mysqld.exe --skip-grant-tables &

b.无密码登录
mysql -uroot

c.刷新管理员权限
flush privileges;

d.有权限后改密码
alter user 'root'@'localhost' identified by '789';

3)关闭win下任务管理器中mysqld进程

4)重新启动mysql服务
net start mysql57

二、内容在总结中

check表检查:
mysql> check table v_user;
---------------------------------------------------------------------------+
| yzmedu.v_user | check | Error    | Table 'yzmedu.class' doesn't exist
                                                                           |
| yzmedu.v_user | check | Error    | View 'yzmedu.v_user' references invalid table(s) or c
olumn(s) or function(s) or definer/invoker of view lack rights to use them |
| yzmedu.v_user | check | error    | Corrupt
                                                                           |
---------------------------------------------------------------------------+

索引的存储分类:
1.myisam
1)frm 表结构
2)myd 表数据
3)myi 表索引

2.innodb
1)frm 表结构
2)ibd 索引+部分表数据
3)ibdata1 所有表共享空间

复合索引:
对于创建的多列索引,只要查询的条件中用到最左边的列,索引一般就会被使用.

like关键字:
#desc select * from user where username like 'linux%'\G
当使用like进行搜索时,%在前索引可能会失效.

null判断:
#desc select * from user where username is null;
当判断null值时会使用username这一列的索引.

or关键字:
#desc select * from user where username='user7' or age=15\G
在使用or的情况下两边的索引都有可能失效.

字段和值类型不同:
#desc select * from user where username=200\G
当条件中字段和值的类型不同时,该字段的索引可能会失效.

查看索引的使用频次:
mysql> show status like "%Handler_read%";
+-----------------------+-------+
| Variable_name         | Value |
+-----------------------+-------+
| Handler_read_key      | 42    |    #越大越好
| Handler_read_rnd_next | 306   |    #越小越好
+-----------------------+-------+

多表查询索引使用:
#desc select * from t1 where class_id in(select id from class)\G
#desc select t1.* from t1,class where t1.class_id=class.id\G
#desc select t1.* from class left join t1 on t1.class_id=class.id\G
目前5.7的版本中常用的多表查询都进行索引优化.

Mysql服务器优化:
1.四种字符集问题
2.slow log慢查询日志问题
3.root密码丢失

mysql root密码破解:
1.密码没有忘,但我要改密码
set password=password('123');

2.密码忘记了,我要破解密码
1)关闭mysql服务
net stop mysql57

2)越过user表启动mysql
a.越过授权表启动mysql母进程
cd AppServ\MySQL\bin
mysqld.exe --skip-grant-tables &

b.无密码登录
mysql -uroot

c.刷新管理员权限
flush privileges;

d.有权限后改密码
alter user 'root'@'localhost' identified by '789';

3)关闭win下任务管理器中mysqld进程

4)重新启动mysql服务
net start mysql57

 

mysql数据库优化课程---18、mysql服务器优化的更多相关文章

  1. 重新学习MySQL数据库5:根据MySQL索引原理进行分析与优化

    重新学习MySQL数据库5:根据MySQL索引原理进行分析与优化 一:Mysql原理与慢查询 MySQL凭借着出色的性能.低廉的成本.丰富的资源,已经成为绝大多数互联网公司的首选关系型数据库.虽然性能 ...

  2. mysql 数据库导入数据报错MySQL server has gone away解决办法

    mysql 数据库导入数据报错MySQL server has gone away解决办法: 进入数据库执行以下命令即可: set global wait_timeout = 2880000; set ...

  3. MySQL基础之第18章 性能优化

    18.1.优化简介 SHOW STATUS LIKE ‘value’;connections                 连接数uptime                          启动 ...

  4. CentOS下mysql数据库data目录迁移和配置优化

    目录迁移 关闭数据库服务 service mysqld stop 复制数据库 mv /var/lib/mysql /data/mysql # 或者使用cp -a复制 # 这两个命令都会带权限到新目录去 ...

  5. Mysql数据库(十)MySQL性能优化

    一.优化概述 为了提高MySQL数据库的性能,不要进行一系列的优化措施.如果MySQL数据库需要进行大量的查询操作,那么就需要对查询语句进行优化.对于耗费时间的查询语句进行优化,可以提高整体地查询速度 ...

  6. MySQL数据库_索引_事务_优化 _锁_存储引擎_存储过程_CAP

    ##一.基础 ## *    插入                   INSERT INTO table_name ( field1, field2,...fieldN )              ...

  7. C语言连接MySQL数据库(课程设计总结)

    刚结束课程设计,也预示着假期立即就要到来了.本次课程设计并不算难,无非就是让做一个XXX系统,实现用户的注冊.登录.菜单管理.超级用户等等一些功能,到如今为止已经做过好几个了,所以基本流程都熟悉了! ...

  8. 一、初识MySQL数据库 二、搭建MySQL数据库(重点) 三、使用MySQL数据库 四、认识MySQL数据库的数据类型 五、操作MySQL数据库的数据(重点)

    一.初识MySQL数据库 ###<1>数据库概述     1. 数据库         长期存储在计算机内的,由组织的可共享的数据集合         存储数据的仓库         文件 ...

  9. Mysql数据库(三)Mysql表结构管理

    一.MySQL数据类型 1.数字类型 (1)整数数据类型包括TINYINT/BIT/BOOL/SMALLINT/MEDIUMINT/INT/BIGINT (2)浮点数据类型包括FLOAT/DOUBLE ...

随机推荐

  1. 007-mac快捷键

    锁屏:Ctrl + Command + Q touch-bar:方法:“系统偏好设置”>“键盘”>“自定Control Strip…”,将“锁定屏幕”图标拖拽到Touch Bar上即可.] ...

  2. 两台Linux系统之间传输文件

    用CRT分别连上两台需要传输文件的linux系统服务器,并检查防火墙是否关闭. 查看防火墙状态: /etc/init.d/iptables status 若防火墙启用,暂时关闭防火墙: /etc/in ...

  3. 16.遇到就jar mismatch! Fix your dependencies的问题

    这是因为两个项目的jar包(android-support-v4.jar)不一致. 解决方法是把2个jar都删除,然后各自加上最新的jar包 但是换了之后发现R文件编不出来,原因是minsdk的设置问 ...

  4. 单舵轮(叉车)AGV里程计数据解算

    单舵轮(叉车)AGV里程计数据解算 2016-07 单舵轮AGV,一般包含一个驱动轮和两个从动轮,驱动轮是同时具备行走和转向两个功能的舵轮,因此,单舵轮AGV的运动学自由度为2个.舵轮线速度V1,舵轮 ...

  5. java 多线程 day15 CyclicBarrier 路障

    import java.util.concurrent.CyclicBarrier;import java.util.concurrent.ExecutorService;import java.ut ...

  6. python爬虫中文乱码解决方法

    python爬虫中文乱码 前几天用python来爬取全国行政区划编码的时候,遇到了中文乱码的问题,折腾了一会儿,才解决.现特记录一下,方便以后查看. 我是用python的requests和bs4库来实 ...

  7. Multiple encodings set for module chunk explatform "GBK" will be used by compiler

    项目用idea启动的时候,突然报了个这个 Multiple encodings set for module explatform "GBK" will be used by co ...

  8. 基于HTML5 FileSystem API的使用介绍(转)

    FileSystem提供了文件夹和文件的创建.移动.删除等操作,大大方便了数据的本地处理, 而且所有的数据都是在沙盒(sandboxed)中,不同的web程序不能互相访问,这就保证了数据 的完整和安全 ...

  9. 2017 Multi-University Training Contest - Team 1 03Colorful Tree

    地址:http://acm.split.hdu.edu.cn/showproblem.php?pid=6035 题面: Colorful Tree Time Limit: 6000/3000 MS ( ...

  10. vue下载文件

    import fileDownload from 'js-file-download' let params = { ", ", "filename":&quo ...