数据库,用户及权限

常用用户管理操作

# 创建本地用户 abc
create user abc@localhost
# 创建内网能够访问的用户 abc
create user abc@'192.168.1.0/255.255.255.0'
# 创建用户时指定密码
create user abc@localhost identified by 'abc'
# 创建用户时指定加密的密码
create user abc@localhost identified by password '*90E462C37378CED12064BB3388827D2BA3A9B689'
# 删除用户
drop user abc@localhost
# 将数据库 shop 所有表权限授予本地 abc 用户
grant all on shop.* to abc@localhost
# 将数据库 shop 所有表权限授予本地 abc 用户并指定用户密码
grant all on shop.* to abc@localhost identified by 'abcde'
# 重命名用户 abc@localhost 为 xyz@localhost(权限与重命名之前相同)
rename user abc@localhost to xyz@localhost
# 废除用户在数据库 shop 上的所有权限
revoke all on shop.* from abc@localhost
# 修改用户的密码
set password for abc@localhost = password('abcdefg')
# 修改用户的密码,使用经过加密的密码
set password for abc@localhost = '*90E462C37378CED12064BB3388827D2BA3A9B689'
# 修改当前用户的密码
set password = password('root')
# 删除用户
drop user abc@localhost
# 查看用户信息
select user, host, password from mysql.user
# 通过直接修改数据库的方式修改密码,操作完之后,需要刷新一下权限
update mysql.user set password=password('abc')
where user='abc' and host = '%'
flush privileges

常用数据库创建操作

# 查看 sql 语句的帮助
help
# 查看 select 语句的帮助
help select
# 创建 UTF-8 字符集的数据库
create database db_name character set = utf8
# 使用 db_name 数据库
use db_name
# 删除数据库
drop database db_name

导入,导出及进程管理

mysqladmin 常用命令

# 创建一个 UTF-8 编码的数据库
mysqladmin -uroot -p --default-character-set=utf8 create db_name
# 删除远程的数据库
mysqladmin -uroot -p -h192.168.1.8 drop db_name
# 修改 root 用户密码
mysqladmin -uroot -p password 123456
# 查看数据库状态
mysqladmin -uroot -proot -h192.168.1.8 status
# 查看数据库是否存活
mysqladmin -uroot -proot -h192.168.1.8 ping
# 查看数据库的设置
mysqladmin -uroot -proot -h192.168.1.8 variables
# 查看数据库服务器中的线程
mysqladmin -uroot -proot -h192.168.1.8 processlist
# 杀死数据库 ID 为 3, 4 的线程
mysqladmin -uroot -proot -h192.168.1.8 kill 3,4
# 关闭数据库
mysqladmin -uroot -proot -h192.168.1.8 shutdown

mysqldump 常用命令

# 备份多个数据库的建表语句(-d 表示不备份数据)
mysqldump -uroot -proot -h192.168.100.60 -d --default-character-set=utf8 --B db_name1 db_name2 > a.sql
# 备份单个数据库
mysqldump -uroot -proot -h192.168.100.60 -d --default-character-set=utf8 db_name1 > a.sql
# 备份数据库的建表语句及数据
mysqldump -uroot -proot -h192.168.100.60 --default-character-set=utf8 db_name1 > a.sql
# mysqldump 常用参数:
# -A 备份所有数据库
# -c 使用完整的 insert 语句
# -B 指定备份的数据库
# -n 不加入 create databases 语句
# -t 不加入 create table 语句,在备份数据的时候用到
# -d 不加入 insert 语句,在备份数据库结构的时候用到
# -R 备份存储过程,默认是没有备份存储过程的
# --tables 指定备份的表
# --triggers 备份触发器

存储过程

设置变量,查看变量

-- 设置系统变量,系统变量可以加 @@ 前缀
set @@sort_buffer_size = 1000000
set profiling = 1
-- 查看变量
select @@profiling
-- 在全局范围内设置系统变量
set global sort_buffer_size = 1000000
-- 在 session 中设置系统变量
-- 没有加 global/session 以最后一次设置的 global/session 为准
set session sort_buffer_size = 1000000
-- 设置用户自定义变量,用户自定义变量加 @ 前缀
set @myvar = 1

创建存储过程,取序列号,其中包含加锁机制。

delimiter //
create procedure `sequence`(out `ret` bigint)
comment '获取序列号'
begin
declare lockstatus int;
if get_lock('seq_lock',60) then
update file_seq set cur_value = cur_value+1 where code = 'file';
select cur_value into ret from file_seq where code = 'file';
select release_lock('seq_lock') into lockstatus;
end if;
end //
delimiter ;

实现更为复杂的取序列号函数:

delimiter //
drop function if exists sequence;
create function `sequence`(xcode varchar(128)) returns bigint
comment '获取序列号' not deterministic reads sql data
begin
declare lockstatus int;
declare ret bigint;
declare db_date varchar(20);
if get_lock('seq_lock',60) then
select cur_value into ret from t_sequence where code = xcode;
if ret is null then
insert into t_sequence(code, cur_value) values(xcode, 0);
end if;
update t_sequence set cur_value = cur_value+1 where code = xcode;
select cur_value into ret from t_sequence where code = xcode;
return ret;
select release_lock('seq_lock') into lockstatus;
end if;
end //
delimiter ;

SQL 性能优化

SQL 性能优化主要是针对查询。对于查询,可以通过两个辅助工具来协助分析 SQL 语句:

  • profile 用于查看一条 SQL 语句的详细执行过程
  • explain 用于查看 select 语句的执行计划

使用 profile 首先需要打开 profiling,然后执行 SQL 语句,再查询 profile,如下:

select @@profiling;
set profiling = 1;
select * from table_name;
show profile;
show profiles;
show profile for query 1;
set profiling = 0;

通过 show profile 可以查看对应 sql 的执行过程,每个过程花费时间是多少,进而有且于分析 SQL 可以在哪些方面进行优化。

使用 explain 可以了解查询语句的执行计划。以下是一个查询语句的执行计划举例:

以上各列的解释如下:

  • id 查询语句顺序
  • select_type 查询语句的类型
  • table 查询的表名
  • type 关联类型
    • system 对应的表只有一行记录
    • const 对应的表只查询到一行记录
  • possible_keys 可能用到的索引
  • key 在执行时实际使用的索引
  • key_len key的长度
  • ref 与主键进行比较的列
  • rows 有多少行会被查询比较
  • extra 关于查询过程的附加信息

在进行 Mysql 优化时,可以有针对性地从 mysql 说明文档 查询对应列的解释。

MySQL 基础及性能优化工具的更多相关文章

  1. 2020重新出发,MySql基础,性能优化

    @ 目录 MySQL性能优化 MySQL性能优化简述 使用 SHOW STATUS 命令 使用慢查询日志 MySQL 查询分析器 EXPLAIN DESCRIBE 索引对查询速度的影响 MySQL优化 ...

  2. MySQL 基础十 性能优化

    1.优化sql 2.建立索引 3.优化表结构,避免多个join查询

  3. PHP性能优化工具–xhprof安装

    PHP性能优化工具–xhprof安装,这里我先贴出大致的步骤: 1.获取xhprof 2.编译前预处理 3.编译安装 4.配置php.ini 5.查看运行结果 那么下面我们开始安装xhprof工具吧: ...

  4. PLSQL_性能优化工具系列16_Best Practices: Proactively Avoiding Database

    占位符 PLSQL_性能优化工具系列_Best Practices: Proactively Avoiding Database/Query Performance Issue

  5. Linux/Android 性能优化工具 perf

    /***************************************************************************** * Linux/Android 性能优化工 ...

  6. 性能优化工具 MVC Mini Profiler

    性能优化工具 MVC Mini Profiler   MVC MiniProfiler是Stack Overflow团队设计的一款对ASP.NET MVC.WebForm 以及WCF 的性能分析的小程 ...

  7. ASP.NET MVC性能优化工具 MiniProfiler

    ASP.NET MVC性能优化工具 MiniProfiler 2014年04月19日 ⁄ ASP.NET ⁄ 共 1159字 ⁄ 字号 小 中 大 ⁄ 暂无评论 ⁄ 阅读 325 views 次 MV ...

  8. Web性能优化工具WebPageTest(一)——总览与配置

    网站性能优化工具大致分为两类:综合类和RUM类(实时监控用户类),WebPageTest属于综合类. WebPageTest通过布置一些特定的场景进行测试,例如不同的网速.浏览器.位置等. 测试完成后 ...

  9. PLSQL优化基础和性能优化 (学习总结)

    PLSQL优化基础和性能优化 (学习总结) 网上有一篇关于PLSQL优化的文章,不错,个人根据自己的经验再稍加整理和归纳,总结PLSQL优化和性能调优 适合有一定PLSQL基础,需要进一步提高的学友看 ...

随机推荐

  1. Windows8 UI MessageBox In DevExpress

    // custom messagebox using System; using System.Drawing; using System.Windows.Forms; using DevExpres ...

  2. HBase JavaAPI操作示例

    package testHBase; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.hbase.HBase ...

  3. html 超文本标记语言

    1.html超文本标记语言 2.在html中存在着大量的标签,我们用html中存在的标签将要显示在网页的内容包含起来. 3.css 控制网页显示内容的效果. 4.html+css 只能是静态网页. 5 ...

  4. java调用sqlldr oracle 安装的bin目录

    package com.jyc.sqlldr; import java.io.BufferedReader;import java.io.InputStream;import java.io.Inpu ...

  5. Daily Scrum Meeting ——FirstDay(Beta)12.09

    一.Daily Scrum Meeting照片 活动室被借走的我们只能站在宿舍门口一会儿会,还遇到了翁导查寝,被我们的架势吓了一跳不知道我们要干嘛.....

  6. Java环境变量的简记

    1,安装版的jre或jdk.安装后如果不做开发用,则只是做Java运行时环境,则不需要手动配置任何Java环境变量. 2,绿色解压版(拷贝版)jdk或jre.运行和开发都需要配置环境变量. 运行Jav ...

  7. TFS 分支导致nuget项目依赖丢失

    问题: 项目的代码 在tfs上分支后,签出项目.编译时发现无法编译,原有的nuget来的包的dll都丢失了(项目签入时,默认会忽略dll) 在网上找了下,发现一个简单的解决方法: 在"程序包 ...

  8. 修改radio与check样式

    一般的radio与check的样式很难看,这个时候就需要我们自己修改其样式 逻辑思维: 1.用label包裹input标签以及样式标签,然后将radio定位到界面以外,设置样式标签的样式 2.使用伪类 ...

  9. linpe包-让发送和接收数据分析更快和更容易

    1.简介 通常在R中从来进行分析和展现的数据都是以基本的格式保存的,如.csv或者.Rdata,然后使用.Rmd文件来进行分析的呈现.通过这个方式,分析师不仅可以呈现他们的统计分析的结果,还可以直接生 ...

  10. C语言题目复习前7章重点程序

    /** #include <stdio.h> #include <stdlib.h> int max(int n1, int n2) { return (n1 > n2) ...