当前位置: 主页 > 数据库

access数据库sql语句大全-access执行sql语句

发布时间:2023-02-08 14:23   浏览次数:次   作者:佚名

【树萌致力于成为最优秀的数据科学社区,专注于大数据、分析挖掘、数据可视化。 业务范围:线下活动、线上课程、猎头服务、项目对接】

原作者:黄山(mchdba)|来自:ITPUB技术社区

一、mysql架构

由数据库和数据库实例组成,是单入口多线程架构。

数据库:物理操作系统文件或其他文件的集合。 在mysql中,数据库文件可以是frm、myd、myi、ibd等结尾的文件,在使用ndb存储引擎时,不是os文件,而是存储在内存中的文件。

数据库实例:由数据库后台进程/线程和一块共享内存区组成,可以被正在运行的后台进程/线程共享。

2、mysql文件类型

Mysql的主要文件类型有以下几种:

参数文件:在哪里可以找到mysql实例启动时的数据库文件,并指定一些初始化参数,其中定义了某个内存结构的大小等设置,还介绍了参数类型和定义范围。

日志文件:记录mysql响应某个条件时写入的文件。

套接字文件:用linux的mysql命令行窗口登录时需要的文件。

Pid文件:mysql实例的进程文件。

mysql表结构文件:存放mysql表结构定义文件。

存储引擎文件:记录存储引擎信息的文件。

3.参数文件my.cnf

Mysql实例启动时,会先读取配置参数文件my.cnf

找到 my.cnf 位置

(1): 默认: mysql--help|grep my.cnf

(2):后台进程查找:ps –eaf|grep mysql

access执行sql语句_access中sql语句大全_access数据库sql语句大全

(3):全局搜索:find /-name my.cnf

可以使用vi直接维护修改里面的参数值

(1)动态:可以通过set实时修改

(2)static,只能在my.cnf中修改,需要重启才能生效

Mysql参数文件中的参数可以分为动态(dynamic)参数和静态(static)参数两种。 动态参数是指在mysql实例运行过程中可以修改,设置global sort_buffer_size=32999999; 修改后,其他连接会重新建立连接,才会生效。

有效范围分为:全局和会话。

静态指令在整个mysql实例运行过程中是不能修改的,就像read-only只读一样。

4.日志文件

日志文件记录影响 mysql 数据库的各种类型的活动。 常见的日志文件包括错误日志、二进制日志、慢查询日志、全量查询日志、重做日志和撤销日志。

5.错误日志

错误日志记录了mysql的启动、运行、关闭过程。 当mysql dba遇到问题时,他应该尽快查看这个错误日志文件。 这个文件不仅记录了错误信息,还记录了一些警告信息和纠正信息。 ,这个错误日志文件类似于oracle的alert文件,只是默认以error结尾。 您可以传递显示变量access数据库sql语句大全,例如“log_error”;

您可以看到带有服务器主机名文件名的错误文件。 当然你也可以在my.cnf中设置错误日志文件的路径:

vim my.cnf

日志错误=/usr/local/mysql/mysqld.log

我们可以在错误日志文件中看到一些数据库的启动信息、警告信息、错误信息

6.慢查询日志slow log

慢查询日志是记录运行缓慢的SQL语句信息,对SQL语句的优化有很好的帮助。 可以设置一个阈值,将运行时间超过阈值的SQL语句的运行信息记录到slow log日志里面去。 阈值可以通过long_query_time设置,也可以设置为毫秒和微秒:

但是需要注意一件事:运行时间等于阈值的,是不会被记录的。

另一个参数是 log_queries_not_using_indexes。 如果运行的SQL没有使用索引,只要超过阈值就会记录在慢查询日志中。

access数据库sql语句大全_access中sql语句大全_access执行sql语句

long_query_time=0(记录所有的sql可以审计),dba可以通过这个审计来促进业务的发展,可以知道哪些业务发展的好,哪些业务发展的不好,通过slow sql可以分析出哪些应用性能差,需要待优化 改进,dba最大的作用和贡献就是通过维护数据库来促进业务的发展和进步。 从数据到业务,这是我们需要一直努力的方向。

慢查询日志也可以记录在表中,

slow_log表,也可以把慢查询日志放到一个表中

显示像“log_output”这样的变量; 检查如果是文件,就存放在slowlog中,如果是表,就存放在slow_log表中。

7.全查询日志

它将所有的请求信息记录到mysql数据库中,不管请求信息是否被正确执行,默认文件名为hostname.log,可以看到request for access denied。

数据库审计+故障排除跟踪(3%-5%性能损失)

8.二进制日志

它记录了改变数据库的操作,但不包括select操作和show操作,因为这些操作并没有修改数据库本身。 如果还想记录select和show,需要查看之前的full query log。 另外binlog中还包括数据库变更操作的执行时间和执行时间等信息。

binary的主要功能如下:

(1):还原恢复。 一些数据的恢复需要二进制日志。 整个数据库文件恢复后,可以在此基础上通过二进制日志进行点到时间的恢复。

(2):复制。 其原理与恢复类似。 通过复制执行二进制日志,实现远程mysql数据库(slave)与mysql数据库(master)实时同步。

通过在my.cnf中设置log-bin=/home/data/mysql/binlog/mysql-bin.log来生效,默认在数据目录datadir下。

Binlog日志参数:

max_binlog_size:指定单个二进制文件的最大值。 如果超过这个值,会生成一个新的日志文件,后缀为+1,记录在.index文件中。 默认值是1G,但是从多年的dba生涯总结来看,64M是一个常见的大小设置。

binlog_cache_size:

使用innodb存储引擎时,所有未提交的二进制日志都会记录在一个缓存中,committed会在事务提交时直接将缓冲的二进制日志写入二进制日志文件,缓冲区的大小由binlog_cache_size决定决定这个buffer是基于session的,也就是每个线程需要事务的时候,mysql会分配一个binlog_cache_size的缓存,所以这个值的设置需要非常小心,不能设置太大,以免避免内存溢出。

同步二进制日志:

sync_binlog=N,引入了参数优化,大概意思是缓冲区每写N次,就同步到磁盘文件。 如果N设置为1,则每次都会写入binlog磁盘文件,最安全最安全,如果N>1,当发生意外时,意味着会有N-1个dml没有被写入binlog,可能会出现活跃数据不一致的情况。

access执行sql语句_access中sql语句大全_access数据库sql语句大全

binlog-do-db,binlog-ingore-db:

需要写入或忽略哪些库的日志。 默认为空,表示所有库的日志都可以写入二进制文件。

日志从属更新:

在slave server上开启slave log功能,让这台电脑可以组成一个镜像链(A->B->C),可以在slave库上生成二进制日志文件,在slave上挂载另一个slave图书馆图书馆。

binlog-format:日志格式

有语句,行,混合格式

声明:每条修改数据的sql都会记录在binlog中。

优点:无需记录每一行的变化,减少binlog日志量,节省IO,提高性能。 (与row相比,能节省多少性能和日志量取决于应用的SQL情况。通常情况下,以row格式修改或插入相同记录产生的日志量要比Statement产生的日志量小,但是考虑到如果条件更新操作,以及删除整表,alter table等操作,ROW格式会产生大量的日志,所以在考虑是否使用ROW格式日志时,应该根据应用的实际情况,产生的日志量会增加多少,以及由此带来的IO性能问题。)

缺点:由于只记录了执行语句,为了让这些语句在slave上正确运行,需要在每条语句执行时记录一些相关信息,以保证slave上可以获取到所有的语句并且在master端执行。 的结果。 另外,对于mysql的replication,像一些特定的函数,slave可以和master保持一致,也会有很多相关的问题(比如sleep()函数、last_insert_id()、用户自定义函数(udf ) 会有问题)。

2、Row:不记录sql语句上下文的相关信息,只保存哪条记录被修改了。

优点:binlog不需要记录执行的SQL语句的上下文相关信息,只需要记录记录被修改成什么。 所以rowlevel日志内容会清楚的记录每一行数据修改的细节。 并且不会出现某些特定情况下无法正确复制存储过程、函数或触发器调用和触发器的问题。

缺点:当所有执行的语句都记录在日志中时,会记录为每一行记录的修改,可能会产生大量的日志内容。 比如一条update语句修改了多条记录,那么binlog中的每一条修改都会被记录下来,这样就会造成大量的binlog日志,尤其是执行altertable等语句时,每条记录都会因为修改了表结构,则表的每条记录都会记录在日志中。

3.Mixedlevel:是以上两个层次的混合使用。 一般语句修改使用statment格式保存binlog。 比如一些功能,语句无法完成主从复制操作,采用行格式保存binlog。 MySQL会根据具体的sql语句来执行每一条,用于区分要记录的日志格式,即Statement和Row二选一。 新版MySQL Squadron的rowlevel模式也进行了优化,并不是所有的修改都会记录在rowlevel中,比如遇到表结构变化时,会记录在statement模式中。 对于update、delete等修改数据的语句,仍然会记录所有行的变化。

使用以下函数的语句也不能被复制:

*加载文件()

*UUID()

*用户()

*FOUND_ROWS()

*SYSDATE()(除非在启动时启用了 --sysdate-is-now 选项)

access中sql语句大全_access执行sql语句_access数据库sql语句大全

同时,INSERT ... SELECT 会比 RBR 产生更多的行级锁

行,混合

9.socket套接字文件

linux系统下本地连接mysql可以使用linux域socketsocket方式,发送文件需要socket套接字,可以通过参数sockets控制。 一般默认在/tmp目录下,也可以通过以下两种方式查看:

1. ps -eaf|grep mysql |grep 套接字

[root@data01 binlog]# ps -eaf|grep mysql|grep socket

mysql 3152 1979 0 2 月 28 日? 00:00:02 /usr/local/mysql/bin/mysqld--basedir=/usr/local/mysql--datadir=/home/data/mysql/data--plugin-dir=/usr/local/mysql/ lib/plugin --user=mysql --log-error=/usr/local/mysql/mysqld.log --open-files-limit=8192 --pid-file=/usr/local/mysql/mysqld.pid - -socket=/usr/local/mysql/mysql.sock --port=3306

[root@data01 binlog]#

2.

3.我的.cnf

套接字=/usr/local/mysql/mysql.sock

10.pid文件

当mysql实例启动时,它会将自己的进程id写入一个文件。 这个文件就是pid文件,由参数pid_file控制。 默认路径位于数据库目录中。 您可以通过以下三种方式查看:

1), 显示像'pid_file'这样的变量;

2)、ps -eaf|grepmysql|grep pid

3)、My.cnf(pid-file=/usr/local/mysql/mysqld.pid)

11.表结构文件

*.frm

*.ibd

access中sql语句大全_access执行sql语句_access数据库sql语句大全

12、innodb存储文件

innodb存储引擎在存储设计上模仿了oracle。 这个文件是默认的表空间文件,可以通过参数innodb_data_file_path来设置。 格式如下:

innodb_data_file_path= IBdata1:128M;IBdata2:128M:autoextend

多个文件可以组成一个表空间,文件的属性可以同时指定。 如果IBdata1和IBdata2位于不同的磁盘组,可以在一定程度上提高性能。 file后面的属性表示文件大小,autoextend表示还可以扩展。

但是如果innodb_file_per_table设置为true,那么表数据文件就会在一个单独的.ibd文件中,而不是在这个ibdata文件中。

13.重做文件

所有的数据库都是log first,先写log,再写数据文件,所以有redo log的规则。

默认情况下,将有两个文件名为 ib_logfile0 和 ib_logfile1。 在mysql数据库目录下可以看到这两个文件。 这对于 innodb 存储引擎非常重要,因为它们记录了 innodb 存储引擎的事务日志。

重做日志文件的主要用途是:在实例或介质发生故障时,重做日志可以派上用场。 如果数据库实例由于主机掉电而失效,InnoDB存储引擎会使用重做日志恢复到掉电前的时刻,以保证数据的完整性。

每个innodb存储引擎至少有一个重做日志组,每个组至少有2个重做日志文件,比如默认的ib_logfile0和ib_logfile1。 为了获得更高的可靠性,可以设置多个组,也可以设置每个组放在不同的磁盘上以提高性能

LSN 日志序列号:

增量生成的,可以唯一标记一个redo log,这对我们的数据库故障恢复非常重要。 可以唯一定位数据库运行状态。 至于具体怎么定位,可以去redo和undo的源码看看。 源代码:在“storage/innobase/include/log0log.h”

查看参数设置:show variables like 'innodb%log%';

14.撤销日志

存在于共享表空间ibdata1中access数据库sql语句大全,有一个回滚段地址,存放头信息,配置头信息,段头信息,存放与redo相对的数据更新操作。 如果使用rollback,会将undo段中的数据写回数据文件。

如果使用单独的表空间,则直接存储在表的私有空间,而不是共享表空间。在innodb存储引擎中,undo log用于完成事务回滚和MVCC功能

重做和撤消不是相互独立的。 他们是相关的。 它们交替协作以确保数据的一致性和安全性。 具体可以参考何博士的文章。 关于redo和undo,参考何博士的资料:

何博士在数据库领域非常有权威。 他的文章都是干货,非常值得学习。 每个人都尝试花时间学习。

PS:资料收集自网络。 它是很久以前编译的。 我不记得来源了。 抱歉,如果重复相同的内容。