判断 服务器架构性能 数据,服务器架构之性能扩展-第五章(6)

Mysql>create table t2 like t1;//复制表结构

Mysql>insert into t2 select * from t1; //复制数据内容

60d3211dccf781de12779d3c8850d89c.png

b90c6e9c375987c18818146a56234f02.png

索引是一种快速查询的有效方法,可以通过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索引时指唯一索引,是没有重复行的索引。

bcb4342c8445dc6e1cfcfd517e5ac20f.png

Alter方法创建和删除索引

919fbf1d85a4ad1e85d90a34d865ef8c.png

删除主键,如果索引列是自动增长的变量。首先要取消自动增长,然后才可以删除主键,因为自动增长序列默认为主键。

232648451fb00cd8a5e51337efdc4513.png

增加自动增长主键索引

10b3bc65cda59da820a182146f4b7910.png

视图:是存在于表之外的另一张表,符合条件的查询结果

Mysql>create view v_t1 as select * from t1 where id >10;

Mysql>drop view v_t1;

0be276401661072ed53ce7da203f3f31.png

视图时随着主表而变化的表

603d7430ffc53e8b29663660fdf5f192.png

字符串函数:

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个空格

cfe599bc3077f73c78e97105e3f332b5.png

f3fd0740185b85fecdadb82247f1c74c.png

数学函数:

Bin(number)//十进制转为二进制

Ceiling(string1)//向上取整

Floor(string)//向下取整

Max(col)//取最大值,聚合时使用

Min(col)//取最小值,聚合时使用

Sqrt(number)//开平方

Rand()//返回0-1内的随即取值

e4ef1ded907b4f4b87e98fca0576a5cc.png

日期函数:

Curdate() //返回当前日志

Curtime() //返回当前时间

Now() //返回当前日期时间

Week(date) //返回这是多少周

Year(date) //返回年份

Datediff(date1,date2) //返回开始时间date1和结束时间date2间天数

10f954aa89af8d252530c0cdd7e60a7e.png

预处理是传递一个参数作为where判断语句:

Mysql>prepare hello from “select * from t1 where id >?”;

Mysql>set @i=1;

Mysql>excute hello using @i;

Mysql>drop prepare stml;

4eb2ef9c8e3049a31bf01031b011bc4c.png

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引擎才可以。

acff18d39308b69538e23ffcc8273eb9.png

回滚恢复数据

1abb901263e3c5b9fea482ed6c7dbc1b.png

设置回滚点

0351b455743b537fe8d82278c3bb9fa1.png

存储是一种批量插入数据的方法,需要先将结尾符改为//,最后再改回来,然后通过call命令来调用存储

223e28e68984f760bc53b79fcee8e216.png

触发器是一种当完成某项动作的同时,可以同时调用其它数据库进程同时进行。通过create trigger创建。

提前存在的值则old,不存在则new。

Insert型触发器:

a3a65701d3f931197bd266766f7140ca.png

ee93075dc9f2590ceed662e49b341a68.png

Delete型触发器

841cacf276e31dc6a25cf844a3a6be55.png

Update型触发器:

e4ded8384686e4604db9e306abac1822.png

联合查看:可以使用联合查看来查询触发与否

24fc8a16109f44b6cf271056e9e3dbbd.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技巧

正则表达式:

7bd34a6ee343ea601da7b2c2938a387e.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.1优化sql语句一般步骤

首先查看各种语句使用频率

Mysql>show 【session/global】 status; //session当前连接,global表示数据启动至今

登陆以来进行增删改查的次数

de9885f8770794bfb5f82f6288e87ada.png

Com_update,com_delete分别表示更新和删除次数。

对于innodb引擎可以使用以下查询语句,innodb_rows_delete/update/select/insert

Innodb引擎是影响的行数,myisam引擎是影响的次数。

Innodb是影响的行数,myisam是影响的次数。

Connections代表连接数,uptime代表连接时间,slow_queries代表慢查询次数。

6f2a37bda458fd151dc13221d7ca054f.png

定位执行效率低的语句

Mysql>explain select * from t where id=1000;

Mysql>desc select * from t where id=1000;

f29dcb4e3244754f72f66844abb6c7be.png

我们重点看一下影响行数。

对一个表增加索引之后,查询范围由9变2,快多了。

864f99c4fcf272d1a32d6b1a936d9cc1.png

索引是优化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参数较大的,应该建立索引

3ab724da7ff3e48b46840642641983d8.png

5.3常用sql优化

5.3.1提高数据的导入效率

常用导入数据的方法是通过outfile进行的。通过outfile导出数据,这时是表内容,非表结构。例如导出数据

3aeba52ddd5427ab1be6b5dd0755da3b.png

导入数据

69b7372ee70b306517c3fc8c7b1f8648.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避免使用嵌套查询

7a734f890c3acf145a8f428212a93f52.png

a0a064ade51e3957b2f1d1aad0369cf6.png

5.4数据库的优化

数据库的优化一般可以通过拆分表提高表的访问效率,这也可以解决大存储量;使用中间表技术提高查询速度,中间表一般就是视图技术。

数据库锁定可以使用lock table t read/write;

读锁,有一个人读锁,其他人可读不可以写。

写锁,只有本人可以进行增删改查,其他人不能读写。

22a0f182215c35ff0aad45cb94396c27.png

5.4.2四种字符集问题

Mysql>status;查看系统字符集。它包括服务器字符集,数据库字符集,客户端字符集,链接字符集

48a4cc608bde58f9d9cf02a3f5703f40.png

字符集可以通过/etc/my.cnf配置文件进行修改

【client】用于定义客户端字符集和链接字符集

11f4362ad62a96789b36a62c459a3bd2.png

【mysqld】控制着服务器字符集和数据库字符集

下面的collation-server是校验字符集

981846aaa3067e97bcfe78c0179424e8.png

Mysql>show character set; //查看校验字符集

c2b17ccb91490a761537bc87beb1bd8c.png

Bin_log日志是系统进行恢复的重要日志

e187df516755b139b1309a47b99015a0.png

通过修改/etc/my.cnf文件,去掉#号即可

3746cc93f6b13257059691298bb7fde1.png

5.4.4慢查询日志

慢查询日志是进行数据库优化的基础。

Vi /etc/my.cnf

Log_slow_queries=slow.log//开启慢查询

Log_query_time=5//设置慢查询的时间

7e6cda11a2f336a24b344bdc6d2686c8.png

Socket默认是位于/tmp/mysql.sock, mysql的启动需要socket文件,当然可以通过重启数据库自动建立socket,也可以不用socket便实现登陆。可以使用

Mysql>mysql –u root –p –protocol tcp –hlocalhost

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”);//修改密码

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在ARM架构服务器上采用微服务和容器化部署时,有一些注意事项可以考虑: 1. 容器镜像:确保选择适用于ARM架构的容器镜像,因为ARM架构与传统的x86架构有所不同。可以使用Docker Hub或其他容器仓库来查找适用于ARM架构的镜像。 2. 构建和编译:在构建和编译微服务应用程序时,需要使用ARM架构的编译工具链和库。确保使用适用于ARM架构的编译器和相关工具。 3. 资源限制:ARM架构服务器通常具有较少的资源(如内存和处理能力),因此需要注意微服务和容器的资源使用情况。确保微服务设计合理,不会消耗过多的资源。 4. 网络通信:确保容器之间的网络通信正常。根据需要,配置容器网络以适应微服务之间的通信。 5. 监控和日志:设置适当的监控和日志记录机制,以便及时发现和解决问题。可以使用容器平台提供的监控和日志工具,或者使用第三方工具进行监控和日志记录。 6. 安全性:采取必要的安全措施,确保容器和微服务的安全性。包括限制容器的权限、使用合适的访问控制和认证机制等。 7. 高可用性:考虑在ARM架构服务器上实现高可用性。可以使用负载均衡、容器编排工具等来实现容器的高可用性。 8. 迁移和扩展:在进行微服务和容器化部署时,考虑未来的迁移和扩展需求。选择具有良好迁移和扩展支持的容器平台和工具。 这些是在ARM架构服务器上采用微服务和容器化部署时需要注意的一些事项。根据具体情况,可能还有其他特定的注意事项需要考虑。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值