判断 服务器架构性能 数据,服务器架构之性能扩展-第五章(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”);//修改密码

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/305956.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何在 ASP.NET Core 中 使用 功能开关

.NET Core 中的 功能管理 (Feature Management) 包可用于实现 功能开关,什么意思呢?就是可以通过 功能开关 特性动态的改变应用程序的行为而不需要改变任何的业务逻辑代码,听起来是不是挺有意思,本篇我们就来讨论如何使用这个包。…

「译」 .NET 5 新增的Http, Sockets, DNS 和 TLS 遥测

.NET 一直在稳定的增加和改善对应用程序进行跨平台的诊断分析,在.NET Core 3.0, 我们看到了 EventCounters[1] 的介绍,用于观察和分析指标测量。我最近在几个 .NET Core 的应用程序中使用 counters,来跟踪服务一段时间内 http 的请…

服务器磁盘系统,服务器磁盘阵列与操作系统

服务器磁盘阵列与操作系统 内容精选换一换硬件要求如表1所示。操作系统要求如表2所示。上表中所需Ubuntu下载地址:服务器1:Ubuntu 18.04.1镜像包、Ubuntu 16.04.4 镜像包。服务器2:Ubuntu 16.04.3 镜像包。在安装操作系统过程中“选择软件列表…

Prism for WPF 搭建一个简单的模块化开发框架

站长今天发现一个好项目,看原文贴图挺不错的,好项目应该让更多人知道,特别是该项目使得Prism搭建,网上使用prism做的开源成熟项目不多,这个值得大家研究。看项目gitee仓库截图,项目不错,star太少…

探索 .Net Core 的 SourceLink

介绍Source Link是一组软件包和一个规范, 它将一些元数据添加到PDB文件,以将本地文件重新映射到GitHub上的文件,因此Visual Studio可以在这需要时下载文件, 该项目的目的是可以为使用Nuget安装软件的用户提供源代码调试, Microsoft库&#xf…

「译」 用 Blazor WebAssembly 实现微前端

原文作者: Wael Kdouh原文链接:https://medium.com/waelkdouh/microfrontends-with-blazor-webassembly-b25e4ba3f325我聊下最近我在做的事情,然后分享下在Blazor WebAssembly 微前端的实现细节,这篇文章是我的一些心得,以及一个示…

使用 dotnet-monitor 分析.NET 应用程序

dotnet-monitor 是 .NET Core 命令行接口 (CLI) 工具, 可以很方便的在dotnet环境中分析我们的应用程序,需要注意的是,目前它还只是一个实验性的工具在这之前,我们使用的有 dotnet-counters,dotnet-dump 和 dotnet-trace&#xff0…

mysql数据库查看用户名_mysql怎么查看用户名?

我们在使用mysql的时候,有时候需要来查看当前用户。本篇文章将和大家讲述mysql怎么查看用户名,感兴趣的朋友可以了解一下。启动数据库:[rootserver ~]# mysqld_safe &[1] 3289[rootserver ~]# 130913 08:19:58 mysqld_safe Logging to /u…

如何实现 ASP.NET Core WebApi 的版本化

Web API 的版本化可以尽量保证在相同url情况下保留一个 api 的多个版本,通常一个 webapi 会有多个client,这些client包括:app,web,html5,crawl 等等同构或者异构的平台,当 api 升级之后&#xf…

mysql查询重复的名字_Mysql中like用法:查询名字中含有风字的学生信息

一、表名和字段–1. 学生表 student (s_id,s_name,s_birth,s_sex) –学生编号,学生姓名,出生年月,学生性别–2. 课程表 course (c_id,c_name,t_id) –课程编号,课程名称,教师编号–3. 教师表 teacher (t_id,t_name) –…

一次Task.Run异常问题的排查

最近在测试一个功能代码时发现一个非常奇怪的问题,主要是Task.Run引起一些不符合逻辑的错误,以下针对这一问题排查的总结。问题代码可以建个控制台程序来运行以下代码class Program{static User user new User();static void Main(string[] args){for (…

git maven 一键部署_Jenkins Git Maven搭建自动化部署项目环境 邮件通知

简介折腾了两个晚上,趁着今晚比较有空,把jenkinsgitmaven搭建自动化部署项目环境搭建的过程记录一下,这里我把github作为git的远程仓库(https://github.com/jacky- lulu/cxf_demo-Maven-Webapp)系统:centos6.5maven: Apache Maven 3.3…

在.NET Core 中收集数据的几种方式

APM是一种应用性能监控工具,可以帮助理解系统行为, 用于分析性能问题的工具,以便发生故障的时候,能够快速定位和解决问题, 通过汇聚业务系统各处理环节的实时数据,分析业务系统各事务处理的交易路径和处理时间,实现对应…

java 连接池连接mysql数据库需要哪些jar包_DBCP-基于Java8导入DBCP连接池所需JAR包并编写DBCPUtils工具类...

上述五个jar包缺一不可下载解压后,进入解压出的文件夹将这五个jar包复制出来放入自己创建的myJar文件夹中(myJar文件夹创建与说明)接下来就可以在工程中进行使用package utils;import com.mysql.cj.jdbc.Driver;import org.apache.commons.dbcp2.BasicDataSource;import java.s…

C# 在自定义的控制台输出重定向类中整合调用方信息

C# 在自定义的控制台输出重定向类中整合调用方信息目录C# 在自定义的控制台输出重定向类中整合调用方信息一、前言二、输出重定向基础版三、输出重定向进阶版(传递调用方信息)四、后记及资源独立观察员 2021 年 1 月 6 日一、前言众所周知,在…

mac 上mysql怎么卸载不了_mac的mysql怎么卸载?

Mac下卸载mysql的方法:1、关闭mysql查看mysql是否启动:ps -ef |grep mysql输入:kill -9 (./mysqld前面第二个数字,这里是627) 然后回车,关闭mysql。2、卸载:在Mac终端使用下面的命令删除所有mysql文件即可s…

C#实现网页加载后将页面截取成长图片

背景最近再做一个需求,需要对网页生成预览图,如下图但是网页千千万,总不能一个个打开,截图吧;于是想着能不能使用代码来实现网页的截图。其实要实现这个功能,无非就是要么实现一个仿真浏览器,要…

“既然计划没有变化快,那制订计划还有个卵用啊!”

这是头哥侃码的第229篇原创每年年初,我的朋友圈里都会炸出不少在打完鸡血之后,迫不及待向全世界宣告自己 “新年Flag” 的人。有的人,把健身、养生设为目标,什么不暴瘦20斤不换头像呀,什么再也不吃炸鸡啤酒啦&#xff…

图书管理系统jsp代码_【程序源代码】使用Java开发的图书管理系统

关键字:java 管理系统 正文 | 内容01—【概述】使用Java开发的图书管理系统,读者可以注册登录,登录时会判断账号类型再分别跳到各自对应的页面,读者可以查找,借阅,还书,查看历史借阅记录&#x…

整合.NET WebAPI和 Vuejs——在.NET单体应用中使用 Vuejs 和 ElementUI

.NET简介.NET 是一种用于构建多种应用的免费开源开发平台,例如:Web 应用、Web API 和微服务云中的无服务器函数云原生应用移动应用桌面应用1). Windows WPF2). Windows 窗体3). 通用 Windows 平台 (UWP)游戏物联网 (IoT)机器学习控制台应用Windows 服务跨…