服务器架构之性能扩展-第五章(6)
2012-08-19 23:03
218 查看
第五章 Mysql性能优化
5.1mysql基本操作
5.1.1mysql表复制
Mysql>create table t2 like t1; //复制表结构
Mysql>insert into t2 select * from t1; //复制数据内容
![](https://oscdn.geek-share.com/Uploads/Images/Content/201909/20/81b24fb6b4b7dfc0d2e4c68828bca622.png)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201909/20/6ca9f720624306c3a8978357133e2602.png)
2.1.2 mysql索引
索引是一种快速查询的有效方法,可以通过alter增加索引或create语句创建。
mysql>alter table t1 add ind_id (id);
mysql>alter table t1 add unique/primary key (id);
mysql>create index ind_id on table t1 (id);
mysql>show index from t1;
mysql>drop index ind_id on table t1;
mysql>alter table t1 drop index ind_id;
Unique索引时指唯一索引,是没有重复行的索引。
![](https://oscdn.geek-share.com/Uploads/Images/Content/201909/20/3e48b2552350e84e9944df0ed9b8ed48.png)
Alter方法创建和删除索引
![](https://oscdn.geek-share.com/Uploads/Images/Content/201909/20/61d29c537f9d01788970c1aeffb0244a.png)
删除主键,如果索引列是自动增长的变量。首先要取消自动增长,然后才可以删除主键,因为自动增长序列默认为主键。
![](https://oscdn.geek-share.com/Uploads/Images/Content/201909/20/5fba53eefe8ce19a3e54528c56062116.png)
增加自动增长主键索引
![](https://oscdn.geek-share.com/Uploads/Images/Content/201909/20/caff9e339d2e69f76f0013b8b678fdd1.png)
5.1.3mysql视图
视图:是存在于表之外的另一张表,符合条件的查询结果
Mysql>create view v_t1 as select * from t1 where id >10;
Mysql>drop view v_t1;
![](https://oscdn.geek-share.com/Uploads/Images/Content/201909/20/5c5cc8af048b629f6ceb03761c7905e7.png)
视图时随着主表而变化的表
![](https://oscdn.geek-share.com/Uploads/Images/Content/201909/20/7ab360cedec0ac1c870e74ac11eb7821.png)
5.1.4 mysql内置函数
字符串函数:
Concat (string1,……) //连接字符串
Lcase(string1) //换成小写
Ucase(string1)//换成大写
Length(string1) //string1的长度
Rtrim(string1) //去除后端空格
Ltrim(string1)//取出前段空格
Repeat (string1,count)//重复count次
Replace(str,search_str,replace_str) //在str中,用replace_str代替search_str
Substring(str,position,length) //从str的position开始,取length个字符
Space(count) //生成count个空格
![](https://oscdn.geek-share.com/Uploads/Images/Content/201909/20/31026ce87185a38c25ff948eb8d1180e.png)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201909/20/ecc1e500bdc56eb98f73a39064fc9a6a.png)
数学函数:
Bin(number)//十进制转为二进制
Ceiling(string1)//向上取整
Floor(string)//向下取整
Max(col)//取最大值,聚合时使用
Min(col)//取最小值,聚合时使用
Sqrt(number)//开平方
Rand()//返回0-1内的随即取值
![](https://oscdn.geek-share.com/Uploads/Images/Content/201909/20/b18a6e744bdbbaa6d5fa1b61617a37d8.png)
日期函数:
Curdate() //返回当前日志
Curtime() //返回当前时间
Now() //返回当前日期时间
Week(date) //返回这是多少周
Year(date) //返回年份
Datediff(date1,date2) //返回开始时间date1和结束时间date2间天数
![](https://oscdn.geek-share.com/Uploads/Images/Content/201909/20/b164d51a2e06bea78d11310ca6c38955.png)
5.1.5 mysql预处理语句
预处理是传递一个参数作为where判断语句:
Mysql>prepare hello from “select * from t1 where id >?”;
Mysql>set @i=1;
Mysql>excute hello using @i;
Mysql>drop prepare stml;
![](https://oscdn.geek-share.com/Uploads/Images/Content/201909/20/b1a8c7f251016def8587245b6f0ba212.png)
5.1.6 mysql 事务处理
mysql>set autocommit=0; //关闭自动提交
mysql>delete from t1 where id=11; //
mysql>savepoint p1; //建立一个还原点
mysql>delete from t1 where id=10;
mysql>savepoint2;
mysql>rollback to p1; //恢复到p1还原点,p2自动失效
mysql>rollback; //退回到原始还原点
修改引擎,使用事处理功能,要使用innodb引擎才可以。
![](https://oscdn.geek-share.com/Uploads/Images/Content/201909/20/eff3c00f4e8728c46bbdd68c469e9079.png)
回滚恢复数据
![](https://oscdn.geek-share.com/Uploads/Images/Content/201909/20/a71091f9958c53e488a74c75846972f0.png)
设置回滚点
![](https://oscdn.geek-share.com/Uploads/Images/Content/201909/20/5a840fba723d2d7b36a50c0b4d988cf1.png)
5.1.7 mysql存储
存储是一种批量插入数据的方法,需要先将结尾符改为//,最后再改回来,然后通过call命令来调用存储
![](https://oscdn.geek-share.com/Uploads/Images/Content/201909/20/fd8896c92a9695b6049aeb0f46423bab.png)
5.1.8mysql触发器
触发器是一种当完成某项动作的同时,可以同时调用其它数据库进程同时进行。通过create trigger创建。
提前存在的值则old,不存在则new。
Insert型触发器:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201909/20/09fb1225de1cc4c46574c1b42011aad9.png)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201909/20/dc8500f9e07719622f846d33fcfdc0c3.png)
Delete型触发器
![](https://oscdn.geek-share.com/Uploads/Images/Content/201909/20/401639c58e44e575a405ac589aa462fb.png)
Update型触发器:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201909/20/8189d579e2ac21a94b875ef0db3d6d4a.png)
联合查看:可以使用联合查看来查询触发与否
![](https://oscdn.geek-share.com/Uploads/Images/Content/201909/20/66e5e2fa34c2ef47a5b43ca223128443.png)
5.1.9重排auto_increment值
常用的删除数据表内容有如下两种方法:
Mysql>delete from t1; //清除表的内容,改变结构
Mysql>truncate table t1; //清楚表的内容,不改变结构,速度快常用
Mysql>alter table t1 auto_increment=1; //如果自动增长值不是从1开始可以这样调整
5.1.10常见sql技巧
正则表达式:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201909/20/179b099e78ba7bc0ed6500758aa565ec.png)
Mysql>select name,email from t where email pegexp “@163[,.]com$”; //匹配@163.com或@163,com邮箱
Mysql>select name,email from t where emal like “@163.com” or email kike “@163,com”;
Rand()随机:
Mysql>select * from t order by rand() limit 3; //随机3条数据
Group by的排序扩展
Mysql>select cname,pname,count(pname) from t group by cname,pame with rollup; //分别对个结果进行排序和统计
创建外键:
Mysql>create table t3(id int,name char(20), foreign kye (id) references t2(id) on delete cascade on update cascade); //创建t3使用外键t2
Mysql help使用:
Mysql>? Create 查看命令和用法
5.2 SQL语句优化
5.2.1优化sql语句一般步骤
首先查看各种语句使用频率
Mysql>show 【session/global】 status; //session当前连接,global表示数据启动至今
登陆以来进行增删改查的次数
![](https://oscdn.geek-share.com/Uploads/Images/Content/201909/20/57635d3092d26f59a47616b9c05e644b.png)
Com_update,com_delete分别表示更新和删除次数。
对于innodb引擎可以使用以下查询语句,innodb_rows_delete/update/select/insert
Innodb引擎是影响的行数,myisam引擎是影响的次数。
Innodb是影响的行数,myisam是影响的次数。
Connections代表连接数,uptime代表连接时间,slow_queries代表慢查询次数。
![](https://oscdn.geek-share.com/Uploads/Images/Content/201909/20/4c9c9ed1bdf2fef624768d775bd35f89.png)
定位执行效率低的语句
Mysql>explain select * from t where id=1000;
Mysql>desc select * from t where id=1000;
![](https://oscdn.geek-share.com/Uploads/Images/Content/201909/20/d89b0c66fb5105a2184302605e6bec2d.png)
我们重点看一下影响行数。
对一个表增加索引之后,查询范围由9变2,快多了。
![](https://oscdn.geek-share.com/Uploads/Images/Content/201909/20/eea2b1b956ab2a3ed2dc7addb406f2ee.png)
5.2.2 mysql索引
索引是优化mysql数据库最常用的方法,使用索引注意以下几点。
1, ,对于复合索引,一般只对左边的索引有效。
2, 使用通配符时,like左边不能用通配符
例:mysql>explain select * from t where name like “%3”\G //不会使用索引
3.对于null的搜索is null
例:mysql>desc select * from t where name is null \G
1.对于行数低于100的数据表,索引效果不是很好
2.联合查询语句语句要都使用索引,才会使用索引
3.如果索引列是字符串,则查询时要加“”
4.对于handler_read_rnd_next参数较大的,应该建立索引
![](https://oscdn.geek-share.com/Uploads/Images/Content/201909/20/b0bd8fcd4e0151fe02ef5fad7836a44a.png)
5.3常用sql优化
5.3.1提高数据的导入效率
常用导入数据的方法是通过outfile进行的。通过outfile导出数据,这时是表内容,非表结构。例如导出数据
![](https://oscdn.geek-share.com/Uploads/Images/Content/201909/20/e1766bed2e8f0d53ad18cef0d6d33f27.png)
导入数据
![](https://oscdn.geek-share.com/Uploads/Images/Content/201909/20/bacfe5a8b8dc0d84fa7f2262c4a5dc99.png)
对于innodb引擎表可以通过以下方法提高速度:
1、通过set unique_checks=0,关闭唯一性效验,导入数据完毕后再set unique_checks=1;恢复唯一性效验。
2、关闭自动提交,提高导入效率。导入数据前执行set autocommit=0关闭自动提交;导入后set autocommit=1,恢复自动提交。
5.3.2优化insert语句
使用insert delayed可以使数据库得到更高的效率。并且可以增加bulk_inser_buffer_size的变量值来提高速度
5.3.3 避免使用嵌套查询
使用嵌套查询不会调用索引,所以应该避免嵌套语句。
![](https://oscdn.geek-share.com/Uploads/Images/Content/201909/20/2f9278b99fefcb78001f848328058126.png)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201909/20/5df23da576829cc6707f71e2947b152d.png)
5.4数据库的优化
数据库的优化一般可以通过拆分表提高表的访问效率,这也可以解决大存储量;使用中间表技术提高查询速度,中间表一般就是视图技术。
5.4.1myisam锁定
数据库锁定可以使用lock table t read/write;
读锁,有一个人读锁,其他人可读不可以写。
写锁,只有本人可以进行增删改查,其他人不能读写。
![](https://oscdn.geek-share.com/Uploads/Images/Content/201909/20/26b2d1331a6ea7a391a742ca3c66343a.png)
5.4.2四种字符集问题
Mysql>status;查看系统字符集。它包括服务器字符集,数据库字符集,客户端字符集,链接字符集
![](https://oscdn.geek-share.com/Uploads/Images/Content/201909/20/b8a9a99974b02e881a198098fdf3bbb2.png)
字符集可以通过/etc/my.cnf配置文件进行修改
【client】用于定义客户端字符集和链接字符集
![](https://oscdn.geek-share.com/Uploads/Images/Content/201909/20/6295d1ae7bee8232e682dcf66b13f2e3.png)
【mysqld】控制着服务器字符集和数据库字符集
下面的collation-server是校验字符集
![](https://oscdn.geek-share.com/Uploads/Images/Content/201909/20/57240f3e7d3fb7b5713e670b6c2f0005.png)
Mysql>show character set; //查看校验字符集
![](https://oscdn.geek-share.com/Uploads/Images/Content/201909/20/cc1c679b3900e2e292a618e7f52ac21e.png)
5.4.3bin_log日志
Bin_log日志是系统进行恢复的重要日志
![](https://oscdn.geek-share.com/Uploads/Images/Content/201909/20/c4ace21d65c7462c92d1341fea292dd4.png)
通过修改/etc/my.cnf文件,去掉#号即可
![](https://oscdn.geek-share.com/Uploads/Images/Content/201909/20/ed364867001afb69d4257638549413ec.png)
5.4.4慢查询日志
慢查询日志是进行数据库优化的基础。
Vi /etc/my.cnf
Log_slow_queries=slow.log //开启慢查询
Log_query_time=5 //设置慢查询的时间
![](https://oscdn.geek-share.com/Uploads/Images/Content/201909/20/bacaf1a0c2c343cc5dfc6b1c23239dec.png)
5.4.5socket问题
Socket默认是位于/tmp/mysql.sock, mysql的启动需要socket文件,当然可以通过重启数据库自动建立socket,也可以不用socket便实现登陆。可以使用
Mysql>mysql –u root –p –protocol tcp –hlocalhost
5.4.6 root密码丢失
Service mysqld stop
Mysql_safe –skip-grant-tables –user=mysql & //跳过授权表
Mysql –uroot
Mysql>update user set password=password(“123”) where user=”root” and host=”localhost”;
或mysql>set password for root@loaclhost=password(“123”);
或mysql>set password=password(“123”); //修改密码
5.1mysql基本操作
5.1.1mysql表复制
Mysql>create table t2 like t1; //复制表结构
Mysql>insert into t2 select * from t1; //复制数据内容
![](https://oscdn.geek-share.com/Uploads/Images/Content/201909/20/81b24fb6b4b7dfc0d2e4c68828bca622.png)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201909/20/6ca9f720624306c3a8978357133e2602.png)
2.1.2 mysql索引
索引是一种快速查询的有效方法,可以通过alter增加索引或create语句创建。
mysql>alter table t1 add ind_id (id);
mysql>alter table t1 add unique/primary key (id);
mysql>create index ind_id on table t1 (id);
mysql>show index from t1;
mysql>drop index ind_id on table t1;
mysql>alter table t1 drop index ind_id;
Unique索引时指唯一索引,是没有重复行的索引。
![](https://oscdn.geek-share.com/Uploads/Images/Content/201909/20/3e48b2552350e84e9944df0ed9b8ed48.png)
Alter方法创建和删除索引
![](https://oscdn.geek-share.com/Uploads/Images/Content/201909/20/61d29c537f9d01788970c1aeffb0244a.png)
删除主键,如果索引列是自动增长的变量。首先要取消自动增长,然后才可以删除主键,因为自动增长序列默认为主键。
![](https://oscdn.geek-share.com/Uploads/Images/Content/201909/20/5fba53eefe8ce19a3e54528c56062116.png)
增加自动增长主键索引
![](https://oscdn.geek-share.com/Uploads/Images/Content/201909/20/caff9e339d2e69f76f0013b8b678fdd1.png)
5.1.3mysql视图
视图:是存在于表之外的另一张表,符合条件的查询结果
Mysql>create view v_t1 as select * from t1 where id >10;
Mysql>drop view v_t1;
![](https://oscdn.geek-share.com/Uploads/Images/Content/201909/20/5c5cc8af048b629f6ceb03761c7905e7.png)
视图时随着主表而变化的表
![](https://oscdn.geek-share.com/Uploads/Images/Content/201909/20/7ab360cedec0ac1c870e74ac11eb7821.png)
5.1.4 mysql内置函数
字符串函数:
Concat (string1,……) //连接字符串
Lcase(string1) //换成小写
Ucase(string1)//换成大写
Length(string1) //string1的长度
Rtrim(string1) //去除后端空格
Ltrim(string1)//取出前段空格
Repeat (string1,count)//重复count次
Replace(str,search_str,replace_str) //在str中,用replace_str代替search_str
Substring(str,position,length) //从str的position开始,取length个字符
Space(count) //生成count个空格
![](https://oscdn.geek-share.com/Uploads/Images/Content/201909/20/31026ce87185a38c25ff948eb8d1180e.png)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201909/20/ecc1e500bdc56eb98f73a39064fc9a6a.png)
数学函数:
Bin(number)//十进制转为二进制
Ceiling(string1)//向上取整
Floor(string)//向下取整
Max(col)//取最大值,聚合时使用
Min(col)//取最小值,聚合时使用
Sqrt(number)//开平方
Rand()//返回0-1内的随即取值
![](https://oscdn.geek-share.com/Uploads/Images/Content/201909/20/b18a6e744bdbbaa6d5fa1b61617a37d8.png)
日期函数:
Curdate() //返回当前日志
Curtime() //返回当前时间
Now() //返回当前日期时间
Week(date) //返回这是多少周
Year(date) //返回年份
Datediff(date1,date2) //返回开始时间date1和结束时间date2间天数
![](https://oscdn.geek-share.com/Uploads/Images/Content/201909/20/b164d51a2e06bea78d11310ca6c38955.png)
5.1.5 mysql预处理语句
预处理是传递一个参数作为where判断语句:
Mysql>prepare hello from “select * from t1 where id >?”;
Mysql>set @i=1;
Mysql>excute hello using @i;
Mysql>drop prepare stml;
![](https://oscdn.geek-share.com/Uploads/Images/Content/201909/20/b1a8c7f251016def8587245b6f0ba212.png)
5.1.6 mysql 事务处理
mysql>set autocommit=0; //关闭自动提交
mysql>delete from t1 where id=11; //
mysql>savepoint p1; //建立一个还原点
mysql>delete from t1 where id=10;
mysql>savepoint2;
mysql>rollback to p1; //恢复到p1还原点,p2自动失效
mysql>rollback; //退回到原始还原点
修改引擎,使用事处理功能,要使用innodb引擎才可以。
![](https://oscdn.geek-share.com/Uploads/Images/Content/201909/20/eff3c00f4e8728c46bbdd68c469e9079.png)
回滚恢复数据
![](https://oscdn.geek-share.com/Uploads/Images/Content/201909/20/a71091f9958c53e488a74c75846972f0.png)
设置回滚点
![](https://oscdn.geek-share.com/Uploads/Images/Content/201909/20/5a840fba723d2d7b36a50c0b4d988cf1.png)
5.1.7 mysql存储
存储是一种批量插入数据的方法,需要先将结尾符改为//,最后再改回来,然后通过call命令来调用存储
![](https://oscdn.geek-share.com/Uploads/Images/Content/201909/20/fd8896c92a9695b6049aeb0f46423bab.png)
5.1.8mysql触发器
触发器是一种当完成某项动作的同时,可以同时调用其它数据库进程同时进行。通过create trigger创建。
提前存在的值则old,不存在则new。
Insert型触发器:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201909/20/09fb1225de1cc4c46574c1b42011aad9.png)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201909/20/dc8500f9e07719622f846d33fcfdc0c3.png)
Delete型触发器
![](https://oscdn.geek-share.com/Uploads/Images/Content/201909/20/401639c58e44e575a405ac589aa462fb.png)
Update型触发器:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201909/20/8189d579e2ac21a94b875ef0db3d6d4a.png)
联合查看:可以使用联合查看来查询触发与否
![](https://oscdn.geek-share.com/Uploads/Images/Content/201909/20/66e5e2fa34c2ef47a5b43ca223128443.png)
5.1.9重排auto_increment值
常用的删除数据表内容有如下两种方法:
Mysql>delete from t1; //清除表的内容,改变结构
Mysql>truncate table t1; //清楚表的内容,不改变结构,速度快常用
Mysql>alter table t1 auto_increment=1; //如果自动增长值不是从1开始可以这样调整
5.1.10常见sql技巧
正则表达式:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201909/20/179b099e78ba7bc0ed6500758aa565ec.png)
Mysql>select name,email from t where email pegexp “@163[,.]com$”; //匹配@163.com或@163,com邮箱
Mysql>select name,email from t where emal like “@163.com” or email kike “@163,com”;
Rand()随机:
Mysql>select * from t order by rand() limit 3; //随机3条数据
Group by的排序扩展
Mysql>select cname,pname,count(pname) from t group by cname,pame with rollup; //分别对个结果进行排序和统计
创建外键:
Mysql>create table t3(id int,name char(20), foreign kye (id) references t2(id) on delete cascade on update cascade); //创建t3使用外键t2
Mysql help使用:
Mysql>? Create 查看命令和用法
5.2 SQL语句优化
5.2.1优化sql语句一般步骤
首先查看各种语句使用频率
Mysql>show 【session/global】 status; //session当前连接,global表示数据启动至今
登陆以来进行增删改查的次数
![](https://oscdn.geek-share.com/Uploads/Images/Content/201909/20/57635d3092d26f59a47616b9c05e644b.png)
Com_update,com_delete分别表示更新和删除次数。
对于innodb引擎可以使用以下查询语句,innodb_rows_delete/update/select/insert
Innodb引擎是影响的行数,myisam引擎是影响的次数。
Innodb是影响的行数,myisam是影响的次数。
Connections代表连接数,uptime代表连接时间,slow_queries代表慢查询次数。
![](https://oscdn.geek-share.com/Uploads/Images/Content/201909/20/4c9c9ed1bdf2fef624768d775bd35f89.png)
定位执行效率低的语句
Mysql>explain select * from t where id=1000;
Mysql>desc select * from t where id=1000;
![](https://oscdn.geek-share.com/Uploads/Images/Content/201909/20/d89b0c66fb5105a2184302605e6bec2d.png)
我们重点看一下影响行数。
对一个表增加索引之后,查询范围由9变2,快多了。
![](https://oscdn.geek-share.com/Uploads/Images/Content/201909/20/eea2b1b956ab2a3ed2dc7addb406f2ee.png)
5.2.2 mysql索引
索引是优化mysql数据库最常用的方法,使用索引注意以下几点。
1, ,对于复合索引,一般只对左边的索引有效。
2, 使用通配符时,like左边不能用通配符
例:mysql>explain select * from t where name like “%3”\G //不会使用索引
3.对于null的搜索is null
例:mysql>desc select * from t where name is null \G
1.对于行数低于100的数据表,索引效果不是很好
2.联合查询语句语句要都使用索引,才会使用索引
3.如果索引列是字符串,则查询时要加“”
4.对于handler_read_rnd_next参数较大的,应该建立索引
![](https://oscdn.geek-share.com/Uploads/Images/Content/201909/20/b0bd8fcd4e0151fe02ef5fad7836a44a.png)
5.3常用sql优化
5.3.1提高数据的导入效率
常用导入数据的方法是通过outfile进行的。通过outfile导出数据,这时是表内容,非表结构。例如导出数据
![](https://oscdn.geek-share.com/Uploads/Images/Content/201909/20/e1766bed2e8f0d53ad18cef0d6d33f27.png)
导入数据
![](https://oscdn.geek-share.com/Uploads/Images/Content/201909/20/bacfe5a8b8dc0d84fa7f2262c4a5dc99.png)
对于innodb引擎表可以通过以下方法提高速度:
1、通过set unique_checks=0,关闭唯一性效验,导入数据完毕后再set unique_checks=1;恢复唯一性效验。
2、关闭自动提交,提高导入效率。导入数据前执行set autocommit=0关闭自动提交;导入后set autocommit=1,恢复自动提交。
5.3.2优化insert语句
使用insert delayed可以使数据库得到更高的效率。并且可以增加bulk_inser_buffer_size的变量值来提高速度
5.3.3 避免使用嵌套查询
使用嵌套查询不会调用索引,所以应该避免嵌套语句。
![](https://oscdn.geek-share.com/Uploads/Images/Content/201909/20/2f9278b99fefcb78001f848328058126.png)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201909/20/5df23da576829cc6707f71e2947b152d.png)
5.4数据库的优化
数据库的优化一般可以通过拆分表提高表的访问效率,这也可以解决大存储量;使用中间表技术提高查询速度,中间表一般就是视图技术。
5.4.1myisam锁定
数据库锁定可以使用lock table t read/write;
读锁,有一个人读锁,其他人可读不可以写。
写锁,只有本人可以进行增删改查,其他人不能读写。
![](https://oscdn.geek-share.com/Uploads/Images/Content/201909/20/26b2d1331a6ea7a391a742ca3c66343a.png)
5.4.2四种字符集问题
Mysql>status;查看系统字符集。它包括服务器字符集,数据库字符集,客户端字符集,链接字符集
![](https://oscdn.geek-share.com/Uploads/Images/Content/201909/20/b8a9a99974b02e881a198098fdf3bbb2.png)
字符集可以通过/etc/my.cnf配置文件进行修改
【client】用于定义客户端字符集和链接字符集
![](https://oscdn.geek-share.com/Uploads/Images/Content/201909/20/6295d1ae7bee8232e682dcf66b13f2e3.png)
【mysqld】控制着服务器字符集和数据库字符集
下面的collation-server是校验字符集
![](https://oscdn.geek-share.com/Uploads/Images/Content/201909/20/57240f3e7d3fb7b5713e670b6c2f0005.png)
Mysql>show character set; //查看校验字符集
![](https://oscdn.geek-share.com/Uploads/Images/Content/201909/20/cc1c679b3900e2e292a618e7f52ac21e.png)
5.4.3bin_log日志
Bin_log日志是系统进行恢复的重要日志
![](https://oscdn.geek-share.com/Uploads/Images/Content/201909/20/c4ace21d65c7462c92d1341fea292dd4.png)
通过修改/etc/my.cnf文件,去掉#号即可
![](https://oscdn.geek-share.com/Uploads/Images/Content/201909/20/ed364867001afb69d4257638549413ec.png)
5.4.4慢查询日志
慢查询日志是进行数据库优化的基础。
Vi /etc/my.cnf
Log_slow_queries=slow.log //开启慢查询
Log_query_time=5 //设置慢查询的时间
![](https://oscdn.geek-share.com/Uploads/Images/Content/201909/20/bacaf1a0c2c343cc5dfc6b1c23239dec.png)
5.4.5socket问题
Socket默认是位于/tmp/mysql.sock, mysql的启动需要socket文件,当然可以通过重启数据库自动建立socket,也可以不用socket便实现登陆。可以使用
Mysql>mysql –u root –p –protocol tcp –hlocalhost
5.4.6 root密码丢失
Service mysqld stop
Mysql_safe –skip-grant-tables –user=mysql & //跳过授权表
Mysql –uroot
Mysql>update user set password=password(“123”) where user=”root” and host=”localhost”;
或mysql>set password for root@loaclhost=password(“123”);
或mysql>set password=password(“123”); //修改密码
相关文章推荐
- 服务器架构之性能扩展-windows下plesk的部署
- 服务器架构之性能扩展-第八章(9)
- 服务器架构之性能扩展-第六章(7)
- 服务器架构之性能扩展-第十一章(12) 推荐
- 服务器架构之性能扩展-第九章(10)
- 服务器架构之性能扩展-第十章(11)
- 服务器架构之性能扩展-第十三 章(14)
- 服务器架构之性能扩展-第七章(8)
- 服务器架构之性能扩展-第一章(2)
- 服务器架构之性能扩展-第三章squid(4)
- 服务器架构之性能扩展-第二章(3)
- 服务器架构之性能扩展-第十二章(13)
- 服务器架构之性能扩展-第四章(5)
- 服务器架构之性能扩展-目录(1) 推荐
- 存储架构对视频服务器带来的性能影响分析
- 高扩展的基于NIO的服务器架构(二)
- 网游服务器设计--到底应该追求性能和效率还是应该追求架构清晰易维护?
- 网游服务器设计--到底应该追求性能和效率还是应该追求架构清晰易维护?
- SQLServer 服务器架构扩展之数据库扩展的一些步骤