自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(98)
  • 收藏
  • 关注

原创 出来冒个泡,哈哈!!!

由于工作和毕业论文,认证考试等一系列的事情,最近这段时间可能不会更新博文,但不会很长,有兴趣学习数据库的朋友可以耐心等等哈

2024-01-31 17:06:06 413

原创 MySQL_16.数据库事务相关概念

(3)隔离性Isolation: 事务的隔离性是指多个用户并发访问数据库时,一个用户的事务不能被其它用户的事务所干扰,多个并发事务之间数据要相互隔离。在一个事务中,对于同一份数据的读取结果总是相同的,无论是否有其他事务对这份数据进行操作,以及这个事务是否提交。解决了更新丢失、脏读、不可重复读。(2)不可重复读:事务A多次读取同一数据,事务B在事务A多次读取的过程中,对数据作了更新并提交,导致事务A多次读取同一数据时,结果不—致。最低的隔离级别,什么都不需要做,一个事务可以读到另一个事务未提交的结果;

2023-12-23 12:51:16 856

原创 MySQL_15.UNDO和REDO的区别

它的流程:当update一个数据块时,在开始时需要从内存中找到这个数据块,在undo中放入数据块放之前的值old data在undosegment中,那么就可以利用redo来重放事务,通常用于实例恢复和介质恢复、日志挖掘和流(分析redo,捕获实时数据,传到远程数据库,并应用于远程数据库)。undo是oracle在undo段中记录的信息,用于取消或回滚事务,例如对数据进行修改时,数据库会产生undo信息,redo是放在redo日志文件中;Redo中保存的内容是改变向量,改变数据块的大小,是对数据块的覆盖。

2023-12-20 17:36:44 547

原创 MySQL_14.数据库高速缓冲区空间管理

如果返段时间中,即使 I 没有再被访问过,I 的访问次数也仍然是 5,返样 I 将再次回到热。端头,返样就造成了死循环,I 永迖无法被踢出列表。因此,当 I 被放到热端头的时候,访问次数。数据块按照使用时间的早晚排成队列,当缓冲区占满后,调入新的数据块时,必须清除已有的数据。块,来获得空闲数据块空间,那么,最合理的选择就是清除最早没有使用数据块,因为使用该块的。I 块被放入热端头,经过漫长的时间,I 块最终会被放到况端头迕行。如果返段时间 I 被访问多次,则有机会回到热端头,否则,可能被踢出列表。

2023-12-19 13:43:29 825

原创 MySQL_13.InonDB表空间

问:临时表空间主要用于临时排序、分组作用,而临时表空间路径不允许修改,只能放在$datadir目录内,如果SQL语句有大量的排序分组操作,然而磁盘IO又跟不上,对数据库造成阻塞,我们改怎么优化数据库?删除ibdata、ib_log*、undo*、mysql目录下面的*.ibd文件、以及mysql中innodb表的.frm文件。场景:原来是共享表空间,转换成独立表空间以后,数据和索引迁移出ibdata,原来的ibdata占用500G空间不会自动缩小。mysql 5.7之后 : 临时表放在临时表空间。

2023-12-17 12:44:12 924

原创 MySQL_12.Innodb存储引擎参数

提交事务的时候,把该事务的redo 日志写入磁盘文件对应的 os cache 缓存里去,而不是直接进入磁盘文件,可能 1 秒后才会把 os cache 里的数据写入到磁盘文件里去。提交事务的时候,不立即将redo log buffer 里的数据刷入磁盘文件的,而是依靠 InnoDB 的主线程每秒执行一次刷新到磁盘,速度快,不安全,出现故障会丢失一秒的事务。(4)innodb_flush_log_at_trx_commit 控制事物的提交方式,控制日志刷新到硬盘的方式(重要)1启动Innodb存储引擎。

2023-12-16 11:56:07 640

原创 MySQL_11.InnoDB Buffer Pool原理与配置

mysql 5.6 之后:每次停机会dump出buffer pool的数据(space,page number),然后启动时候load进buffer pool预热。mysql 5.6 之前每次启动buffer pool 中页是空的,每次都需要大量的时间加载新的页到内存中,启动后有一段时间性能差。内存小于1G默认1个,这个选项只有当设置 innodb_buffer_pool_size 值大于1G时才生效。5.InnoDB 数据字典,数据库的元数据(数据库名,表名,数据类型,结构,访问权限)

2023-12-14 09:58:11 655

原创 MySQL_10.MySQL体系架构

(5)Redo日志:数据库都是日志先行,先写日志,再写数据文件,保证恢复与完整性,这个对 innodb存储引擎非常重要,因为它们记录了对于innodb存储引擎的事务日志。mysql实例的进程文件,当mysql实例启动的时候,会将自己的进程id写入文件中,该文件即为pid文件,由参数 pid_file控制,默认路径位于数据库目录下。记录存储引擎信息的文件,innodb存储引擎在存储设计上模仿了oracle,该文件就是默认的表空间文件,可以用多个文件组成一个表空间,例如:ibdata*文件。

2023-12-13 19:58:16 1982

原创 MySQL_9.B-数索引

1.定义:B-树是一类树,包括B-树、B+树、B*树等,是一棵自平衡的搜索树,它类似普通的平衡二叉树,不同的一点是B-树允许每个节点有更多的子节点.(2)B+树叶节点两两相连可大大增加区间访问性,可使用在范围查询等,而B-树每个节点 key 和 data 在一起,则无法区间查找。(2)B+树叶节点两两相连可大大增加区间访问性,可使用在范围查询等,而B-树每个节点 key 和 data 在一起,则无法区间查找。(4)在数据结构上:B树为有序数组+平衡多叉树,而B+树为有序数组链表+平衡多叉树。

2023-12-12 09:13:00 560

原创 MySQL_8.一级索引,二级索引概述

而除了聚簇索引以外的所有索引都称为二级索引,二级索引的叶子节点内容是主键的值。在MySQL的查询过程中,SQL优化器会选择合适的索引进行检索,在使用二级索引的过程中,因为二级索引没有存储全部的数据,(2)减少行移动或者数据页分裂时二级索引的维护工作,当数据需要更新的时候,二级索引不需要修改,只需要修改一级索引,一个表只能有一个一级索引,其他的都是二级索引,这样只需要修改一级索引就可以了,不需要重新构建二级索引。在MySQL中主键索引的叶子节点存的是整行数据,而二级索引叶子节点内容是主键的值。

2023-12-11 09:21:07 1106

原创 MySQL_7.索引概述

而B-树查询时间复杂度不固定,与 key 在树中的位置有关, 最好为O(1)。(1)B树索引 (主要,默认索引):mysql innodb默认的索引类型就是 Btree索引(B树,B-树,B+树,B*树),Binary Tree,就是一个二叉树。(2)B+树叶节点两两相连可大大增加区间访问性,可使用在范围查询等,而B-树每个节点 key 和 data 在一起,则无法区间查找。(1)B+树叶节点两两相连可大大增加区间访问性,可使用在范围查询等,而B-树每个节点 key 和 data 在一起,则无法区间查找。

2023-12-10 09:10:15 559

原创 MySQL_6.MySQL常用创建语句

外键必须是主表的主键或者唯一键,如果是另外一张表主键的话,该表主键不允许带有auto_increment 自增长属性。(2)使用like 关键字通过旧表创建新表 ( 包括旧表的 结构 + 信息 + 索引 )外键总结:mysql数据库不建议使用外键、会极大影响数据库运行性能(并发访问)。(3)使用as 关键字通过旧表创建新表 ( 包括旧表的 结构 + 信息 )(9)在test数据库创建包含外键的员工表(YG)和工资表(gz)3.创建表,修改表,删除表等操作。(4)查看表、表结构、表创建语句。

2023-12-09 09:01:55 548

原创 MySQL_5.DML语句基本语法

-案例3:统计(yzjtest_yg 员工表)不同地区(REGION)、不同部门(DEPT)共发了多少工资(SALARY)selct 子查询是将一个查询语句嵌套在另一个查询语句中,在特定情况下,一个查询语句的条件需要另一个查询语句来获取,其语句包括动词 insert、update、delete。内层查询(inner query)语句的查询结果,可以为外层查询(outer query)语句提供查询条件。子查询可以返回单一值(标量子查询)、一个行(标量子查询)、一个列(标量子查询)、一个表(标量子查询)。

2023-12-08 13:55:02 1040

原创 MySQL_4.mysql数据库的安装(超详细——保姆级)

10.windows11/10 部署MySQL数据库大概就是这样,个人感觉已经非常详细了,如果有不足的地方欢迎大家来指出,不过生产环境基本上用的Linux系统部署,这个环境仅限于练习,大家打好基础后期会有Linux环境下MySQL各种集群部署案例,不要着急哈,下篇文章见,拜拜咯!3307(根据自己需要可只初始化3306,这里我只初始化了3306,所以下面命令没执行,如果需要初始化3307则执行下面命令)6. 创建3306 实例的MySQL服务,服务启动 mysql_3306 服务。

2023-12-08 09:14:53 989

原创 MySQL_3.常用数据类型

【代码】MySQL_3.常用数据类型。

2023-12-07 09:12:46 359

原创 MySQL_2.常用维护命令

(8)查看 mysql 数据库当前线程。(10) 查看数据库下的表和索引。(6)查看数据库主库、从库状态。(11)mysql进程管理命令。(3)查看数据库存储引擎状态。(4)查看数据库使用的插件。(7)查看触发器和存储过程。(9)查看某个用户的权限。(5)查看数据库的状态。(1)查看数据库版本。

2023-12-06 08:10:07 509

原创 MySQL_1. mysql数据库介绍

(2) 源码编译安装(开发/测试推荐)使用make和makefile工具可以简单快速地解决各个源文件之间复杂的依赖关系,同时,make工具还可以自动完成所有源码文件的编译工作,并且可以只对上次编译后修改过的文件进行增量编译;(2)企业版的收费,并且价格不便宜,标准版2000美元,企业版5000美元,高级集群版10000美元(6万人民币),但是只包含稳定的功能。(1)社区版的免费,出问题mysql公司概不负责,是企业版的测试版,功能却没有企业版功能完善。(4)mysql不同版本平台支持更新。

2023-12-05 11:09:45 461

原创 shell_81.Linux在命令行中创建使用函数

shell会将定义好的函数传给子 shell 进程,这些函数能够自动用于该 shell 会话中的任何 shell 脚本。该函数会在下次启动新的 bash shell 时生效。随后你就能在系统中的任意地方使用这个函数了。在.bashrc 文件中定义函数。

2023-12-04 08:16:00 557

原创 shell_80.Linux函数的递归

也就是说,x 的阶乘等于 x 乘以 x-1 的阶乘。创建了这样的函数后,你甚至想把它用在其他的脚本中。递归算法的经典例子是计算阶乘。一个数的阶乘是该数之前的所有数乘以该数的值。局部函数变量的一个特性是自成体系(self-containment)。除了获取函数参数,自成体系的函数不需要使用任何外部资源。

2023-12-04 07:57:46 461

原创 shell_79.Linux数组变量和函数

向脚本函数传递数组变量的方法有点儿难以理解。将数组变量当作单个参数传递的话,它不。最后在函数内部,将所有的参数重新组合成一个新的数组变量。将数组变量拆解成多个数组元素,然后将这些数组元素作为函数参。函数向 shell 脚本返回数组变量也采用类似的方法。

2023-11-30 11:20:32 445

原创 shell_78.Linux在函数中处理变量

但这种情况其实很危险,尤其是想在不同的 shell 脚本中使用函数的时候,因为这要求你清楚地知道函数中具体使用了哪些变量,包括那些用来计算非返回值的变量。现在,当你在 func1 函数中使用$temp 变量时,该变量的值不会影响到脚本主体中赋给$temp 变量的值。由于函数中用到了$temp 变量,因此它的值在脚本中使用时受到了影响,产生了意想不到的后果。无须在函数中使用全局变量,任何在函数内部使用的变量都可以被声明为局部变量。类似地,如果在函数内定义了一个全局变量,那么也可以在脚本的主体部分读取它的值。

2023-11-30 11:17:38 428

原创 shell_77.Linux在函数中使用变量

text6 脚本中的 addem 函数首先会检查脚本传给它的参数数目。如果没有参数或者参数多于两个,那么 addem 会返回-1。如果只有一个参数,那么 addem 会将参数与自身相加。如果有两个参数,则 addem 会将二者相加。尽管函数使用了$1 变量和$2 变量,但它们和脚本主体中的$1 变量和$2 变量不是一回事。由于函数使用位置变量访问函数参数,因此无法直接获取脚本的命令行参数。在将$1 变量和$2 变量传给函数后,它们就能跟其他变量一样,可供函数使用了。然后函数可以用位置变量来获取参数值。

2023-11-08 07:40:24 118

原创 shell_76.Linux使用 return 命令

bash shell 会使用 return 命令以特定的退出状态码退出函数。dbl 函数会将$value 变量中用户输入的整数值翻倍,然后用 return 命令返回结果。该脚本会获取 dbl 函数的输出,而不是查看退出状态码。由于退出状态码必须小于 256,因此函数结果也必须。变量提取函数返回值之前执行了其他命令,那么函数的返回值会丢失。当用这种方法从函数中返回值时,一定要小心。这个命令会将 dbl 函数的输出赋给$result 变量。变量保存的是最后执行的那个命令的退出状态码。使用 return 命令。

2023-11-08 07:36:35 191

原创 shell_75.Linux函数返回值

该函数的退出状态码是 1,因为函数中的最后一个命令执行失败了。但你无法知道该函数中。在默认情况下,函数的退出状态码是函数中最后一个命令返回的退出状态码。后,可以使用标准变量$?的其他命令是否执行成功。

2023-11-07 07:49:51 85

原创 shell_74.Linux创建使用函数

commands 是组成函数的一个或多个 bash shell 命令。调用该函数时,bash shell 会依次执行函数内的命令,就像在普通脚本中一样。函数定义不一定非要放在 shell 脚本的最开始部分,但是要注意这种情况。函数名后的空括号表明正在定义的是一个函数。这种语法的命名规则和第一种语法一样。name 定义了该函数的唯一名称。脚本中的函数名不能重复。函数名必须是唯一的,否则就会出问题。如果定义了同名函数,在 bash shell 脚本中创建函数的语法有两种。

2023-11-07 07:46:30 122

原创 shell_73.Linux使用新 shell 启动脚本

用户登录 bash shell 时,另一次是当用户启动 bash shell 时。如果需要某个脚本在两个时刻都运行,每次启动新 shell,bash shell 都会运行.bashrc 文件。①对此进行验证,可以使用这种方法:在。.bashrc 文件通常也借由某个 bash 启动文件来运行,因为.bashrc 文件会运行两次:一次是当。主目录下的.bashrc 文件中加入一条简单的 echo 语句,然后启动一个新 shell。可以将其放入该文件中。

2023-11-06 07:47:10 118 1

原创 shell_72.Linux调度需要定期运行的脚本

要指定一条在每周一的下午 4:15(4:15 p.m.)执行的命令,可以使用军事时间(1:00 p.m.是 13:00,2:00 p.m.是 14:00,3:00 p.m.是 15:00,以此类推)可以使用三字符的文本值(mon、tue、wed、thu、fri、sat、sun)或数值(0 或 7 代表周日,6 代表周六)来指定 dayofweek 字段。cron 程序会以提交作业的用户身份运行该脚本,因此你必须有访问该脚本(或命令)以及输出文件的合理权限。命令列表必须指定要运行的命令或脚本的完整路径。

2023-11-06 07:42:38 72

原创 shell_71.Linux定时运行作业

当在 Linux 系统中运行 at 命令时,显示器并不会关联到该作业。在默认情况下,at 命令会将 STDIN 的输入放入队列。3) c.特定的时间名称,比如 now、noon、midnight 或者 teatime(4:00 p.m.)。一旦知道了哪些作业正在作业队列中等待,就可以用 atrm 命令删除等待中的作业。作业列表中显示了作业号、系统运行该作业的日期和时间,以及该作业所在的作业队列。除了指定运行作业的时间,也可以通过不同的日期格式指定特定的日期。只能删除自己提交的作业,不能删除其他人的。

2023-11-05 08:09:45 212

原创 shell_70.Linux调整谦让度

但是,root 用户和特权用户可以使用 renice 命令对任意进程的优先级做任意调整。(1)nice 命令允许在启动命令时设置其调度优先级。(1)有时候,你想修改系统中已运行命令的优先级。renice 命令会自动更新运行进程的调度优先级。注意,nice 命令和要启动的命令必须出现在同一行中。ps 命令的输出证实,谦让度(NI列)已经调整到了 10。nice 命令会阻止普通用户提高命令的优先级。注意,即便提高其优先级的操作没有成功,指定的命令依然可以运行。(2)nice 命令使得脚本以更低的优先级运行。

2023-11-05 08:05:19 220

原创 shell_69.Linux作业控制

注:因为该作业是默认作业(从加号可以看出),所以仅使用 bg 命令就可以将其以后台模式重启。注意,当使用 jobs 命令时,它列出了作业及其状态,即便默认作业当前并未处于后台模式。在 bash 作业控制中,可以将已停止的作业作为后台进程或前台进程重启。jobs 命令显示了一个已停止的作业和一个运行中的作业,以及两者的作业号和作业使用的命令。jobs 是作业控制中的关键命令,该命令允许用户查看 shell 当前正在处理的作业。由于作业是在前台运行的,因此直到该作业完成后,命令行界面的提示符才会出现。

2023-11-04 17:02:42 143

原创 shell_68.Linux在非控制台下运行脚本

为了保存该命令产生的输出,nohup 命令会自动将 STDOUT 和 STDERR 产生的消息重定向到一个名为 nohup.out 的文件中。当运行位于同一目录中的多个命令时,一定要当心,因为所有的命令输出都会发送到同一个 nohup.out 文件中,结果会让人摸不着头脑。当退出终端会话时,这可以避免进程退出。注意 如果使用nohop运行了另一个命令,那么该命令的输出会被追加到已有的nohup.out文件中。区别在于,当使用 nohup 命令时,如果关闭终端会话,则脚本会忽略其发送的 SIGHUP 信号。

2023-11-04 16:59:46 216

原创 shell_67.Linux以后台模式运行脚本

当脚本 backgroundoutput.sh 在后台运行时,命令 pwd 被输入了进来。脚本的输出、用户输入的命令,以及命令的输出全都混在了一起。在终端会话中使用后台进程一定要小心。注意,在 ps 命令的输出中,每一个后台进程都和终端会话(pts/0)终端关联在一起。但脚本运行不完,就不能在终端会话中执行任何其他操作。最好是将后台脚本的 STDOUT 和STDERR 进行重定向,避免这种杂乱的输出。其中指明了作业号、作业状态(Done),以及用于启动该作业的命令(删除了&)。

2023-11-03 09:57:39 88

原创 shell_66.Linux修改或移除信号捕获

移除信号捕获后,脚本会按照默认行为处理 SIGINT 信号,也就是终止脚本运行。但如果信号是在捕获被移除前接收到的,也可以移除已设置好的信号捕获。在 trap 命令与希望恢复默认行为的信号列表之间加上两个连字符即可。修改了信号捕获之后,脚本处理信号的方式就会发生变化。但如果信号是在捕获被修改前接。收到的,则脚本仍然会根据原先的 trap 命令处理该信号。

2023-11-03 09:55:00 131

原创 shell_65.Linux捕获脚本退出

除了在 shell 脚本中捕获信号,也可以在 shell 脚本退出时捕获信号。这是在 shell 完成任务时执行命令的一种简便方法。因为 SIGINT 信号并未在 trap 命令的信号列表中,所以当按下 Ctrl+C 组合键发送 SIGINT信号时,脚本就退出了。当脚本运行到正常的退出位置时,触发了 EXIT,shell 执行了在 trap 中指定的命令。但在退出之前已经触发了 EXIT,于是 shell 会执行 trap 命令。

2023-11-02 17:59:24 292

原创 shell_64.Linux捕获信号

在 trap 命令中,需要在 commands 部分列出想要 shell 执行的命令,在 signals 部分列出想要捕获的信号(多个信号之间以空格分隔)。每次侦测到 SIGINT 信号时,本例中的 trap 命令都会显示一行简单的文本消息。如果脚本收到了 trap 命令中列出的信号,则该信号不再由。每次使用 Ctrl+C 组合键,脚本都会执行 trap 命令中指定的 echo 语句,而不是忽略信号并让 shell 停止该脚本。定信号的时候,可以使用信号的值或信号名。shell 处理,而是由本地处理。

2023-11-02 17:57:08 75

原创 shell_63.Linux产生信号

杀死”作业后,shell 会显示一条消息,表示运行中的作业已被“杀死”,然后生成提示符。Ctrl+C 组合键会发送 SIGINT 信号,停止 shell 中当前运行的进程。shell 将运行的各个进程称为作业,并为作业在当前shell 内分配了唯一的作业号。停止(stopping)进程跟终止(terminating)进程不同,前者让程序继续驻留在内存中,还能从上次停止的位置继续运行。Ctrl+C 组合键会生成 SIGINT 信号,并将其发送给当前在 shell 中运行的所有进程。Linux 系统信号。

2023-11-01 09:26:37 112

原创 shell_62.shell脚本生成一个标准的 SQL INSERT 语句

重定向将 cat 命令的输出追加到由$outfile 变量指定的文件中。当运行脚本 test23 时,$1 代表第一个命令行参数,指明了待读取数据的文件。while 循环基本上一次读取一行数据,然后将这些值放入 INSERT 语句模板中,最后将结果。注意,其中的数据由变量来替换,变量中。你可以把这些数据库数据放入电子表格,将电子表格保存为 CSV 格式,读取文件,然后创建。无论是将文件读入脚本,还是将数据从脚本输出到文件,都会用到文件重定向,这是一种很。输入,而是被重定向到脚本内部的数据。

2023-11-01 09:22:13 516

原创 shell_61.Linux记录消息

2.输出出现在了 STDOUT 中,同时写入了指定文件。1.有时候,也确实需要将输出同时送往显示器和文件。与其对输出进行两次重定向,不如改用特殊的 tee 命令。tee 命令就像是连接管道的 T 型接头,它能将来自 STDIN 的数据同时送往两处。现在,你可以在为用户显示输出的同时再永久保存一份输出内容了。

2023-10-31 08:12:15 98

原创 shell_60.Linux使用临时文件

在默认情况下,mktemp 会在本地目录中创建一个文件。在创建临时文件时,mktemp 会将全路径名返回给环境变量。这样就能在任何命令中使用该值来引用临时文件了。2.mktemp 命令会任意地将 6 个 X 替换为同等数量的字符,以保证文件名在目录中是唯一的。这段脚本在当前目录中创建了一个临时目录,然后使用 cd 命令进入该目录,在其中创建了两个临时文件。该脚本使用 mktemp 命令创建了临时文件并将文件名赋给了$tempfile 变量。-t 选项会强制 mktemp 命令在系统的临时目录中创建文件。

2023-10-31 08:09:48 204

原创 shell_59.Linux控制命令输出

shell 输出到 null 文件的任何数据都不会被保存,全部会被丢弃。在 Linux 系统中,null 文件的标准位置是/dev/null。要解决这个问题,可以将 STDERR 重定向到一个名为 null 文件的特殊文件。跟它的名字很像,null 文件里什么都没有。1.如果在后台运行的脚本出现错误消息,那么 shell 就会将其通过邮件发送给进程属主。3.也可以在输入重定向中将/dev/null 作为输入文件。这会很麻烦,尤其是当运行的脚本生成很多烦琐的小错误时。

2023-10-30 07:50:15 182

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除