mysql的sql语句执行流程
1、client和server建立连接,client发送sql至server(对应连接器这一过程)2、server如果在查询缓存中发现了该sql,则直接使用查询缓存的结果返回给client,如果查询缓存中没有,则进入下面的步骤(对应查询缓存这一过程,8.0这一过程已经不存在了,8.0完全抛弃了这个功能)3、server对sql进行语法分析,识别出sql里面的字符串是否符合标准,比如select关键
mysql关于聚集索引、非聚集索引的总结
总结:1、mysql的innodb表,就是索引组织表,表中的所有字段都放在索引上,这就约定了数据是严格按照顺序存放的,所以不管插入的先后顺序,它在那个物理上的那个位置与插入的先后顺序无关。2、聚集索引,叶子节点存的是整行数据,直接通过这个聚集索引的键值找到某行3、聚集索引,数据的物理存放顺序与索引顺序是一致的,即:只要索引是相邻的,那么对应的数据一定也是相邻地存放在磁盘上的。4、聚集索引,数据行和
my.cnf文件关于组选项的总结
1、[server]和[mysqld]的区别,没有看到官方文档,个人感觉server指整台服务器,mysqld指实例,当一台服务器上多个实例使用同一个配置文件my.cnf时,[server]通用于所有实例,[mysqld_3306] [[mysqld_3307] [mysqld_3308]对应单独实例2、mysqld从[mysqld]和[server]组中读取选项。 mysqld_safe从[my
mysql关于mysqld_safe的总结
总结1、mysqld_safe是服务端工具,用于启动mysqld,并且是mysqld的守护进程,mysqld_safe加&在后台运行$BASEDIR/bin/mysqld_safe &2、因为mysqld_safe是mysqld的守护进程,所以mysqld_safe脚本会在启动MySQL服务器后继续监控其运行情况,并在其死机时重新启动它。3、直接使用mysqld_safe启动mys
mysql关于mysql.server的总结
1、mysql.server服务端工具,主要作用就是为了方便启动和关闭mysql服务,这个脚本中调用mysqld_safe来启动mysqld2、RPM包安装时,发现/etc/rc.d/init.d/mysql和/usr/share/mysql/mysql.server里面的东西一模一样3、mysql.server脚本其实也是调用mysqld_safe脚本去启动MySQL服务器的,但此时mysqld
mysql关于db.opt文件的总结
总结1、create database时会自动生成一个文件db.opt,存放的数据库的默认字符集,show create database时显示数据库默认字符集即db.opt中字符集2、这个文件丢失不影响数据库运行,该文件丢失之后新建表时,找不到数据库的默认字符集,就把character_set_server当成数据库的默认字符集,show create database时显示character_
mysql关于字符集character set的总结
总结1、创建表和创建数据库时都可以指定字符集2、创建表没有指定字符集则默认使用数据库的字符集,3、创建数据库没有指定字符集则默认使用character_set_server字符集,如果character_set_server没有设置,则默认是latin14、字符序的命名,以其对应的字符集作为前缀,比如字符序utf8_general_ci,标明它是字符集utf8的字符序,所以如果character_
mysql关于表空间的总结
1.系统表空间(System Tablespace)innodb系统表空间包含innodb数据字典(innodb相关对象的元数据),undo logs、the change buffer, and the doublewrite buffer。此外,当innodb_file_per_table=OFF时系统表空间也存储表空间创建的表和索引等数据。由于系统表空间可以存储多张表,因此,其为一个共享表空
mysql关于ib_logfile事务日志和binary log二进制日志的区别
总结1、ib_logfile类似oracle的online redo log,包含commit和uncommit的数据2、binary log类似oracle的online redo log和archive redo log,但是只有commit的数据3、为什么MySQL有binlog,还要redo log?因为MySQL是多存储引擎的,不管使用那种存储引擎,都会有binlog,而不一定有redo
mysql关于redo事务日志ib_logfile的理解
总结1、redo事务日志就是ib_logfile,两个ib_logfile开头的文件,它们就是log group中的redo log file,而且它们的大小完全一致且等于变量innodb_log_file_size定义的值2、redo事务日志的作用就是用于crash recovery,crash recovery是数据库重启时自动的行为,无需为DBA执行任何额外工作3、MySQL以循环方式写入重
mysql关于memory引擎的表的总结
参加官方文档https://dev.mysql.com/doc/refman/5.7/en/memory-storage-engine.html总结1、memory引擎表数据只存放在内存中,插入数据后,文件也只有表结构文件,没有表数据文件,重启后,数据丢失,但是表结构还在,表结构文件也还在2、memory引擎表,一个会话修改了数据,其他会话可以立即看到修改后的数据,和oracle的临时表完全不同3
mysql关于ibdata文件的理解
总结1、默认情况下ibdata存放InnoDB表(InnoDB数据字典)元数据、undo logs、the change buffer, and the doublewrite buffer2、如果innodb_file_per_table=off,则ibdata也存放InnoDB表的实际数据,也就是InnoDB表建立后,不会再有单独的tablename.ibd文件3、虽然InnoDB表元数据通过
mysql关于二进制日志binary log的总结
官方文档路径https://dev.mysql.com/doc/refman/5.7/en/binary-log.html总结1、binary log记录的数据类似oracle的online redo log和archive redo log两者中已经commit提交的数据2、在MySQL 5.7.3及其以后的版本中,若想开启二进制日志,除了log-bin参数外还必须加上server_id参数。否
mysql关于variable的总结
总结1、MySQL的my.cnf文件类似Oracle的参数文件,可以把它理解成oracle的pfile静态参数文件2、MySQL可以使用set命令动态的修改变量,修改session变量只对当前会话产生影响;修改global变量,对所有新会话的global变量、session变量(特殊情况除外,比如wait_timeout变量)产生影响3、set命令修改的变量不会写入my.cnf文件,DB重启的话之
mysql用户创建、修改、删除及授权操作的总结
总结1、mysql命令进行连接如果不带-h,表示user@localhost连接本地localhost数据库服务器,-h后面的ip是数据库服务器的IP2、要让所有ip都能连,create user时用户名后面加@'%',或不加@(不加@默认就是@'%')3、mysql执行grant进行授权,权限是追加的,不用担心会覆盖之前的4、创建用户建议使用grant,因为gra
mysql乱码现象及对字符集的理解
数据库版本是5.7.17现象1Navicat Premium导sqlserver数据到mysql时,发现一些表只导了表结构没有导入数据,一些表导入了部分数据,一些表数据全部导入成功查找原因:1.发现导入成功的数据都是没有任何中文的2.在mysql上删除只导了表结构没有导入数据的表A,使用Navicat Premium重新表A,查看Navicat Premium导入日志...