判断 服务器架构性能 数据,服务器架构之性能扩展-第五章(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,一经查实,立即删除!

相关文章

微服务畅想录

关于微服务的文章,网络上很多,也比较专业。下面,我尝试着用简单的话写点自己对微服务的理解,非常接地气,但只是一家之言,大家还是带着辩证的眼光来读。1、微服务的本质是什么?微服务的本质是&am…

mysql sql 检测磁盘_MySQL 数据库磁盘占用情况查询

查询所有数据库占用磁盘空间大小的SQL语句:select TABLE_SCHEMA, concat(truncate(sum(data_length)/1024/1024,2), MB) as data_size,concat(truncate(sum(index_length)/1024/1024,2),MB) as index_sizefrom information_schema.tablesgroup by TABLE_SCHEMAorder…

anjularjs ajax 调用,AngularJS AJAX调用的服务(AngularJS Ajax Call in Service

我想我的应用程序,使AJAX调用一个RESTful Web服务。 在我的html文件是连接到一个范围对象两个文本框。 这两个领域都连接到通过NG-变“后”功能。 post方法发送“形式”变量从范围的API和web服务增加了两个数字,并用JSON文件,该文件现在包含的…

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

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

存储mysql数据存在特殊字符时处理_SQL数据库对于保存特殊字符的解决办法

数据库的Char、Vachar类型可以兼容汉字,但特殊字符不行,在保存包含有特殊字符的字符串、正文时,会将特殊符号替换成一个”?”号。例如: “基础教育课程手机报•特刊” 》 “基础教育课程手机报?特刊”解决办法是将字段改成NCha…

接口 Swagger 部分Web API的隐藏

背景Swagger是目前最受欢迎的REST APIs文档生成工具,同时也是API的在线测试工具。功能强大谁用谁知道。我就不用在这里推广它了。今天要解决的问题是:如果让一些特定的API接口在Swagger中不显示,即从Swagger中过滤掉一些不想展示的接口&#…

mysql流程控制_Mysql之流程控制结构

顺序结构:程序从上往下依次执行分支结构:程序从两条或多条路径中选择一条去执行循环结构:程序在满足一定条件的基础上,重复执行一段代码一、分支结构1、if函数功能:实现简单的双分支语法:if(表达式1, 表达式…

文件共享服务器第二部,第二章-构建Samba文件共享服务器.docx

洛阳鸿卓国际IT洛阳鸿卓国际IT教育培训中心姓名: 梁冬辉时间:2012章实验报告所在班级: T1181月16实 验 任 务日Linux服务器版系统的地址为Win dows系统的地址为网络拓扑检查smb服务消息是否安装[rootocaThOSt /]# cd /unt/Asianux/RPMS/i roo…

「译」 .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太少…

mysql怎么访问用户B_MySQL访问控制和用户管理

访问控制你需要给用户提供他们所需的访问权,且仅提供他们所需的访问权。这就是所谓的访问控制,管理访问控制需要创建和管理用户账号。多数用户只需要对表进行读和写,但少数用户甚至需要能创建和删除表;某些用户需要读表&#xff0…

探索 .Net Core 的 SourceLink

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

mysql group by 范围_MySQL 按照范围/等级 进行Group By

我们要做一张报表表格,从mysql里取出数据,然后按等级分组,如何实现呢?MySQL 示例 SQL:SELECTftime,sum(cost) as cost,count(advertiser_id) as aduser_num,sum(pv) as pv,sum(vc) as vc,CASEWHEN cost>100000 THEN ‘1’WHEN …

「译」 用 Blazor WebAssembly 实现微前端

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

ubuntu mysql集群搭建_ubuntu server部署mysql集群

简介[说明本次部署的内容,目的等等]本部署文档的目的是如何在ubuntu server上进行mysql的群集部署。前期准备在进行本文档操作前,需要完成如下前期步骤:1.安装3台ubuntu server服务器;Server1: ndbd 192.168.68.5Server2: ndbd 19…

使用 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) –…