设为首页 收藏本站
查看: 760|回复: 0

[经验分享] mysql、mariadb关系型数据库

[复制链接]

尚未签到

发表于 2018-10-4 14:36:12 | 显示全部楼层 |阅读模式
  MariaDB or MySQL:
  RDBMS:
  范式:第一范式、第二范式、第三范式;
  表:row, column;
  关系运算:
  选择
  投影
  数据库:表、索引、视图(虚表)、SQL、存储过程、存储函数、触发器、事件调度器;
  DDL:CREATE,ALTER,DROP
  DML:INSERT/UPDATE/DELETE/SELECT
  约束:
  主键约束:惟一、非空;一张表只能有一个;
  惟一键约束:惟一,可以存在多个;
  外键约束:参考性约束;
  检查性约束:check;
  三层模型:
  物理层 --> SA
  逻辑层 --> DBA
  视图层 --> Coder
  实现:
  Oracle, DB2, Sybase, Infomix, SQL Server;
  MySQL, MariaDB, PostgreSQL, SQLite;
  MySQL:
  5.1 --> 5.5 --> 5.6 --> 5.7 --> 8.0
  MariaDB:5.5.x --> 10.x
  特性:
  插件式存储引擎
  单进程多线程
  安装MySQL:
  OS Vendor:rpm
  MySQL:
  source code:cmake
  binary package:
  i686, x86_64;
  glibc VERSION
  prepackage:rpm, deb
  os, arch,
  服务端程序:
  mysqld, mysqld_safe, mysqld_multi
  客户端程序:
  mysql, mysqldump, mysqlbinlog, mysqladmin, ...
  非客户端类管理程序:
  myisamchk, myisampack, ...
  mysqld-5.7
  创建数据目录,属主属组属于运行者用户身份mysql;
  初始化:
  mysqld  --initilize-insecure --basedir=/usr/local/mysql --datadir=/data/mysql --user=mysql
  查看配置文件路径,修改配置文件:/usr/local/mysql/etc/my.cnf
  datadir
  socket
  includedir
  pid
  准备错误日志文件:
  复制启动脚本:/usr/local/mysql/support-files/mysql.server --> /etc/init.d/mysqld
  配置文件:
  读取多处的多个配置文件,而且会以指定的次序的进行;
  # my_print_defaults
  Default options are read from the following files in the given order:
  /etc/mysql/my.cnf  /etc/my.cnf ~/.my.cnf
  不同的配置文件中出现同一参数且拥有不同值时,后读取将为最终生效值;
  修改默认读取的配置文件(mysqld_safe命令):
  --defaults-file=file_name
  于读取的默认配置文件之外再加载一个文件:
  --defaults-extra-file=path
  程序文件:
  服务端程序:mysqld_safe, mysqld_multi
  客户端程序:mysql, mysqldump, mysqladmin
  工具程序:myisampack, ...
  mysql --> mysql protocol --> mysqld
  mysql:交互式CLI工具;
  mysql [options] db_name
  常用选项:
  --host=host_name, -h host_name:服务端地址;
  --user=user_name, -u user_name:用户名;
  --password[=password], -p[password]:用户密码;
  --port=port_num, -P port_num:服务端端口;
  --protocol={TCP|SOCKET|PIPE|MEMORY}:
  本地通信:基于本地回环地址进行请求,将基于本地通信协议;
  Linux:SOCKET
  Windows:PIPE,MEMORY
  非本地通信:使用非本地回环地址进行的请求; TCP协议;
  --socket=path, -S path
  --database=db_name, -D db_name:
  --compress, -C:数据压缩传输
  --execute=statement, -e statement:非交互模式执行SQL语句;
  --vertical, -E:查询结果纵向显示;
  命令:
  客户端命令:于客户端执行;
  服务端命令:SQL语句,需要一次性完整地发往服务端;语句必须有结束符;
  ?         (\?) Synonym for `help'.
  clear     (\c) Clear the current input statement.
  connect   (\r) Reconnect to the server. Optional arguments are db and host.
  delimiter (\d) Set statement delimiter.
  edit      (\e) Edit command with $EDITOR.
  ego       (\G) Send command to mysql server, display result vertically.
  exit      (\q) Exit mysql. Same as quit.
  go        (\g) Send command to mysql server.
  help      (\h) Display this help.
  nopager   (\n) Disable pager, print to stdout.
  notee     (\t) Don't write into outfile.
  pager     (\P) Set PAGER [to_pager]. Print the query results via PAGER.
  print     (\p) Print current command.
  prompt    (\R) Change your mysql prompt.
  quit      (\q) Quit mysql.
  rehash    (\#) Rebuild completion hash.
  source    (\.) Execute an SQL script file. Takes a file name as an argument.
  status    (\s) Get status information from the server.
  system    (\!) Execute a system shell command.
  tee       (\T) Set outfile [to_outfile]. Append everything into given outfile.
  use       (\u) Use another database. Takes database name as argument.
  charset   (\C) Switch to another charset. Might be needed for processing binlog with multi-byte charsets.
  warnings  (\W) Show warnings after every statement.
  nowarning (\w) Don't show warnings after every statement.
  mysql命令的使用帮助:
  # man mysql
  # mysql  --help  --verbose
  sql脚本运行:
  mysql [options] [DATABASE] < /PATH/FROM/SOME_SQL_SCRIPT
  mysqld服务器程序:工作特性的定义方式
  命令行选项
  配置文件参数
  SHOW [GLOBAL | SESSION] VARIABLES [like_or_where]
  服务器参数/变量:设定MySQL的运行特性;
  mysql> SHOW GLOBAL|[SESSION] VARIABLES [LIKE clause];
  状态(统计)参数/变量:保存MySQL运行中的统计数据或状态数据;
  mysql> SHOW GLOBA|[SESSION] STATUS [LIKE clause];
  显示单个变量设定值的方法:
  mysql> SELECT @@[global.|session.]system_var_name
  %:匹配任意长度的任意字符;
  _:匹配任意单个字符;
  变量/参数级别:
  全局:为所有会话设定默认;
  会话:跟单个会话相关;会话建立会从全局继承;
  服务器变量的调整方式:
  运行时修改:
  global:仅对修改后新建立的会话有效;
  session:仅对当前会话有效,且立即生效;
  启动前通过配置文件修改:
  重启后生效;
  运行时修改变量值操作方法:
  mysql> HELP SET
  SET [GLOBAL | SESSION] system_var_name = expr
  SET [@@global. | @@session. | @@]system_var_name = expr
  注:GLOBAL值的修改要求用户拥有管理权限;
  安装完成后的安全初始化:
  mysql_secure_installation
  运行前常修改的参数:
  innodb_file_per_table=ON
  skip_name_resolve=ON
  ...
  MySQL的数据类型:
  字符型
  数值型
  日期时间型
  内建类型
  字符型:
  CHAR(#), BINARY(#):定长型;CHAR不区分字符大小写,而BINARY区分;
  VARCHAR(#), VARBINARY(#):变长型
  TEXT:TINYTEXT,TEXT,MEDIUMTEXT,LONGTEXT
  BLOB:TINYBLOB,BLOB,MEDIUMBLOB, LONGBLOB
  数值型:
  浮点型:近似
  FLOAT
  DOUBLE
  REAL
  BIT
  整型:精确
  INTEGER:TINYINT,SMALLINT,MEDIUMINT,INT,BIGINT
  DECIMAL
  日期时间型:
  日期:DATE
  时间:TIME
  日期j时间:DATETIME
  时间戳:TIMESTAMP
  年份:YEAR(2), YEAR(4)
  内建:
  ENUM:枚举
  ENUM('Sun','Mon','Tue','Wed')
  SET:集合
  类型修饰符:
  字符型:NOT NULL,NULL,DEFALUT ‘STRING’,CHARACET SET ‘CHARSET’,COLLATION ‘collocation'
  整型:NOT NULL, NULL, DEFALUT value, AUTO_INCREMENT, UNSIGNED
  日期时间型:NOT NULL, NULL, DEFAULT
  SQL MODE:定义mysqld对约束等违反时的响应行为等设定;
  常用的MODE:
  TRADITIONAL
  STRICT_TRANS_TABLES
  STRICT_ALL_TABLES
  修改方式:
  mysql> SET GLOBAL sql_mode='MODE';
  mysql> SET @@global.sql_mode='MODE';
  SQL:DDL,DML
  DDL:
  mysql> HELP Data Definition

  CREATE,>  DATABASE, TABLE
  INDEX, VIEW, USER
  FUNCTION, FUNCTION UDF, PROCEDURE, TABLESPACE, TRIGGER, SERVER
  DML:
  mysql> HELP Data Manipulation
  INSERT/REPLACE, DELETE, SELECT, UPDATE
  数据库:
  CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name CHARACTER SET [=] charset_name  COLLATE [=] collation_name
  ALTER {DATABASE | SCHEMA} [db_name] CHARACTER SET [=] charset_name  COLLATE [=] collation_name
  DROP {DATABASE | SCHEMA} [IF EXISTS] db_name
  表:
  CREATE
  (1) CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name
  (create_definition,...)
  [table_options]
  [partition_options]
  CREATE TABLE [IF NOT EXISTS] tble_name (col_name  data_typ|INDEX|CONSTRAINT);
  table_options:
  ENGINE [=] engine_name
  查看支持的所有存储引擎:
  mysql> SHOW ENGINES;
  查看指定表的存储引擎:
  mysql> SHOW TABLE STATUS LIKE clause;
  ROW_FORMAT [=] {DEFAULT|DYNAMIC|FIXED|COMPRESSED|REDUNDANT|COMPACT}
  (2) CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name
  [(create_definition,...)]
  [table_options]
  [partition_options]
  select_statement
  直接创建表,并将查询语句的结果插入到新创建的表中;
  (3) CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name
  { LIKE old_tbl_name | (LIKE old_tbl_name) }
  复制某存在的表的结构来创建新的空表;
  DROP:
  DROP [TEMPORARY] TABLE [IF EXISTS] tbl_name [, tbl_name];
  ALTER:
  ALTER  TABLE tbl_name

  [alter_specification [,>  可修改内容:
  (1) table_options
  (2) 添加定义:ADD
  字段、字段集合、索引、约束
  (3) 修改字段:
  CHANGE [COLUMN] old_col_name new_col_name column_definition [FIRST|AFTER col_name]
  MODIFY [COLUMN] col_name column_definition [FIRST | AFTER col_name]
  (4) 删除操作:DROP
  字段、索引、约束
  表重命名:
  RENAME [TO|AS] new_tbl_name
  查看表结构定义:
  DESC tbl_name;
  查看表定义:
  SHOW CREATE TABLE tbl_name
  查看表属性信息:
  SHOW TABLE STATUS [{FROM | IN} db_name] [LIKE 'pattern' | WHERE expr]
  索引类型:
  聚集索引、非聚集索引:索引是否与数据存在一起;
  主键索引、辅助索引
  稠密索引、稀疏索引:是否索引了每一个数据项;
  BTREE(B+)、HASH、R Tree、FULLTEXT
  BTREE:左前缀;
  EXPLAIN:分析查询语句的执行路径;
  索引:
  创建:
  CREATE [UNIQUE|FULLTEXT|SPATIAL] INDEX index_name [index_type] ON tbl_name (index_col_name,...)
  查看:
  SHOW {INDEX | INDEXES | KEYS} {FROM | IN} tbl_name [{FROM | IN} db_name] [WHERE expr]
  删除:
  DROP  INDEX index_name ON tbl_name
  视图:VIEW
  虚表:存储下来的SELECT语句;
  创建:
  CREATE  VIEW view_name [(column_list)] AS select_statement
  修改:
  ALTER  VIEW view_name [(column_list)] AS select_statement
  删除:
  DROP VIEW [IF EXISTS] view_name [, view_name] ...
  DML:
  INSERT/REPLACE,DELETE,UPDATE,SELECT
  INSERT:
  单行插入
  批量插入
  INSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE]
  [INTO] tbl_name [(col_name,...)]
  {VALUES | VALUE} ({expr | DEFAULT},...),(...),...
  [ ON DUPLICATE KEY UPDATE
  col_name=expr
  [, col_name=expr] ... ]
  Or:
  INSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE]
  [INTO] tbl_name
  SET col_name={expr | DEFAULT}, ...
  [ ON DUPLICATE KEY UPDATE
  col_name=expr
  [, col_name=expr] ... ]
  Or:
  INSERT [LOW_PRIORITY | HIGH_PRIORITY] [IGNORE]
  [INTO] tbl_name [(col_name,...)]
  SELECT ...
  [ ON DUPLICATE KEY UPDATE
  col_name=expr
  [, col_name=expr] ... ]
  DELETE:
  DELETE  FROM tbl_name [WHERE where_condition] [ORDER BY ...] [LIMIT row_count]
  注意:一定要有限制条件,否则将清空整个表;
  限制条件:
  [WHERE where_condition]
  [ORDER BY ...] [LIMIT row_count]
  UPDATE:
  UPDATE table_reference SET col_name1={expr1|DEFAULT} [, col_name2={expr2|DEFAULT}] ...
  [WHERE where_condition]
  [ORDER BY ...]
  [LIMIT row_count]
  注意:一定要有限制条件,否则将修改整个表中指定字段的数据;
  限制条件:
  [WHERE where_condition]
  [ORDER BY ...] [LIMIT row_count]
  注意:sql_safe_updates变量可阻止不带条件更新操作;
  SELECT:
  Query Cache:缓存查询的执行结果;
  key:查询语句的hash值;
  value:查询语句的执行结果;
  SQL语句的编写方式:
  SELECT name FROM tbl2;
  select name from tbl2;
  查询执行路径:
  请求-->查询缓存
  请求-->查询缓存-->解析器-->预处理器-->优化器-->查询执行引擎-->存储引擎-->缓存-->响应
  SELECT语句的执行流程:
  FROM  --> WHERE --> Group By --> Having --> Order BY --> SELECT --> Limit
  单表查询:
  SELECT
  [ALL | DISTINCT | DISTINCTROW ]
  [SQL_CACHE | SQL_NO_CACHE] [SQL_CALC_FOUND_ROWS]
  select_expr [, select_expr ...]
  [FROM table_references
  [WHERE where_condition]
  [GROUP BY {col_name | expr | position}
  [ASC | DESC], ... [WITH ROLLUP]]
  [HAVING where_condition]
  [ORDER BY {col_name | expr | position}
  [ASC | DESC], ...]
  [LIMIT {[offset,] row_count | row_count OFFSET offset}]
  用法:
  SELECT col1, col2, ... FROM tble_name;   极其危险,慎用;
  SELECT col1, col2, ... FROM tble_name WHERE clause;
  SELECT col1, col2, ... FROM tble_name  [WHERE clause] GROUP BY col_name [HAVING clause];
  DISTINCT:数据去重;
  SQL_CACHE:显式指定缓存查询语句的结果;
  SQL_NO_CACHE:显式指定不缓存查询语句的结果;
  query_cache_type服务器变量有三个值:
  ON:启用;
  SQL_NO_CACHE:不缓存;默认符合缓存条件都缓存;
  OFF:关闭;
  DEMAND:按需缓存;
  SQL_CACHE:缓存;默认不缓存;
  字段可以使用别名 :
  col1 AS alias1, col2 AS alias2, ...
  WHERE子句:指明过滤条件以实现“选择”功能;
  过滤条件:布尔型表达式;
  [WHERE where_condition]
  算术操作符:+, -, *, /, %
  比较操作符:=, , !=, , >, >=, 30 AND Fname='Smith';
  不能跳过索引中的某列;
  index(name,age,gender)
  WHERE name='black' and age > 30;
  WHERE name='black' AND gender='F';
  如果查询中的某个列是为范围查询,那么其右侧的列都无法再使用索引优化查询;
  WHERE age>30 AND Fname='Smith';
  Hash索引:基于哈希表实现,特别适用于值的精确匹配查询;
  适用场景:
  只支持等值比较查询,例如=, IN(),
  不用场景:
  所有非精确值查询;MySQL仅对memory存储引擎支持显式的hash索引;
  索引优点:
  降低需要扫描的数据量,减少IO次数;
  可以帮助避免排序操作,避免使用临时表;
  帮助将随机IO转为顺序IO;
  高性能索引策略:
  (1) 在WHERE中独立使用列,尽量避免其参与运算;
  WHERE age+2 > 32 ;
  (2) 左前缀索引:索引构建于字段的最左侧的多少个字符,要通过索引选择性来评估
  索引选择性:不重复的索引值和数据表的记录总数的比值;
  (3) 多列索引:
  AND连接的多个查询条件更适合使用多列索引,而非多个单键索引;
  (4) 选择合适的索引列次序:选择性最高的放左侧;
  EXPLAIN来分析索引有效性:
  EXPLAIN [explain_type] SELECT select_options
  explain_type:
  EXTENDED
  | PARTITIONS
  输出结果:
  id: 1
  select_type: SIMPLE
  table: students
  type: const
  possible_keys: PRIMARY
  key: PRIMARY
  key_len: 4
  ref: const
  rows: 1
  Extra:
  id:当前查询语句中,第个SELECT语句的编号;
  复杂的查询的类型主要三种:
  简单子查询
  用于FROM中的子查询
  联合查询
  注意:联合查询的分析结果会出现一个额外的匿名临时表;
  select_type:查询类型:
  简单查询:SIMPLE
  复杂查询:
  简单子查询:SUBQUERY
  用于FROM中的子查询:DERIVED
  联合查询中的第一个查询:PRIMARY
  联合查询中的第一个查询之后的其它查询:UNION
  联合查询生成的临时表:UNION RESULT
  table:查询针对的表;
  type:关联类型,或称为访问类型,即MySQL如何去查询表中的行
  ALL:全表扫描;
  index:根据索引的顺序进行的全表扫描;但同时如果Extra列出现了&quot;Using index”表示使用了覆盖索引;
  range:有范围限制地根据索引实现范围扫描;扫描位置始于索引中的某一项,结束于另一项;
  ref:根据索引返回的表中匹配到某单个值的所有行(匹配给定值的行不止一个);
  eq_ref:根据索引返回的表中匹配到某单个值的单一行,仅返回一个行,但需要与某个额外的参考值比较,而不是常数;
  const,system:与某个常数比较,且只返回一行;
  possiable_keys:查询中可能会用到的索引;
  key:查询中使用的索引;
  key_len:查询中用到的索引长度;
  ref:在利用key字段所显示的索引完成查询操作时所引用的列或常量值;
  rows:MySQL估计出的为找到所有的目标项而需要读取的行数;
  Extra:额外信息
  Using index:使用了覆盖索引进行的查询;
  Using where:拿到数据后还要再次进行过滤;
  Using temporary:使用了临时表以完成查询;
  Using filesort:对结果使用了一个外部索引排序;
  存储引擎:
  表类型:也称为“表类型”,表级别概念,不建议在同一个库中的表上使用不同的ENGINE;
  CREATE TABLE ... ENGINE[=]STORAGE_ENGINE_NAME ...
  SHOW TABLE STATUS
  常见的存储引擎:
  MyISAM, Aria, InnoDB, MRG_MYISAM, CSV, BLACKHOLE, MEMORY, PERFORMANCE_SCHEMA, ARCHIVE, FEDERATED
  InnoDB:InnoBase
  Percona-XtraDB, Supports transactions, row-level locking, and foreign keys
  数据存储于“表空间(table space)&quot;中:
  (1) 所有数据库中的所有类型为InnoDB的表的数据和索引存储于同一个表空间中;
  表空间文件:datadir定义的目录中
  文件:ibdata1, ibdata2, ...
  (2) innodb_file_per_table=ON,意味着每表使用单独的表空间文件;
  每表的数据文件(数据和索引,存储于数据库目录)存储于自己专用的表空间文件中,并存储于数据库目录下: tbl_name.ibd
  表结构的定义:在数据库目录,tbl_name.frm
  事务型存储引擎,适合对事务要求较高的场景中;但较适用于处理大量短期事务;
  基于MVCC(Mutli Version Concurrency Control)支持高并发;支持四个隔离级别,默认级别为REPEATABLE-READ;间隙锁以防止幻读;
  使用聚集索引(主键索引);
  支持”自适应Hash索引“;
  锁粒度:行级锁;间隙锁;
  总结:
  数据存储:表空间;
  并发:MVCC,间隙锁,行级锁;
  索引:聚集索引、辅助索引;
  性能:预读操作、内存数据缓冲、内存索引缓存、自适应Hash索引、插入操作缓存区;
  备份:支持热备;
  SHOW ENGINE INNODB STATUS;
  MyISAM:
  支持全文索引(FULLTEXT index)、压缩、空间函数(GIS);
  不支持事务
  锁粒度:表级锁
  崩溃无法保证表安全恢复
  适用场景:只读或读多写少的场景、较小的表(以保证崩溃后恢复的时间较短);
  文件:每个表有三个文件,存储于数据库目录中
  tbl_name.frm:表格式定义;
  tbl_name.MYD:数据文件;
  tbl_name.MYI:索引文件;
  特性:
  加锁和并发:表级锁;
  修复:手动或自动修复、但可能会丢失数据;
  索引:非聚集索引;
  延迟索引更新;
  表压缩;
  行格式:
  {DEFAULT|DYNAMIC|FIXED|COMPRESSED|REDUNDANT|COMPACT}
  其它的存储引擎:
  CSV:将CSV文件(以逗号分隔字段的文本文件)作为MySQL表文件;
  MRG_MYISAM:将多个MyISAM表合并成的虚拟表;
  BLACKHOLE:类似于/dev/null,不真正存储数据;
  MEMORY:内存存储引擎,支持hash索引,表级锁,常用于临时表;
  FEDERATED: 用于访问其它远程MySQL服务器上表的存储引擎接口;
  MariaDB额外支持很多种存储引擎:
  OQGraph、SphinxSE、TokuDB、Cassandra、CONNECT、SQUENCE、...
  搜索引擎:
  lucene, sphinx
  lucene:Solr, ElasticSearch
  并发控制:
  锁:Lock
  锁类型 :
  读锁:共享锁,可被多个读操作共享;
  写锁:排它锁,独占锁;
  锁粒度:
  表锁:在表级别施加锁,并发性较低;
  行锁:在行级别施加锁,并发性较高;维持锁状态的成本较大;
  锁策略:在锁粒度及数据安全性之间寻求一种平衡机制;
  存储引擎:级别以及何时施加或释放锁由存储引擎自行决定;
  MySQL Server:表级别,可自行决定,也允许显式请求;
  锁类别:
  显式锁:用户手动请求的锁;
  隐式锁:存储引擎自行根据需要施加的锁;
  显式锁的使用:
  (1) LOCK TABLES
  LOCK TABLES  tbl_name  read|write, tbl_name read|write, ...
  UNLOCK TABLES
  (2) FLUSH TABLES
  FLUSH TABLES tbl_name,... [WITH READ LOCK];
  UNLOCK TABLES;
  (3) SELECT cluase
  [FOR UPDATE | LOCK IN SHARE MODE]
  事务:
  事务:一组原子性的SQL查询、或者是一个或多个SQL语句组成的独立工作单元;
  事务日志:
  innodb_log_files_in_group
  innodb_log_group_home_dir
  innodb_log_file_size
  innodb_mirrored_log_groups
  ACID测试:
  A:AUTOMICITY,原子性;整个事务中的所有操作要么全部成功执行,要么全部失败后回滚;
  C:CONSISTENCY,一致性;数据库总是应该从一个一致性状态转为另一个一致性状态;
  I:ISOLATION,隔离性;一个事务所做出的操作在提交之前,是否能为其它事务可见;出于保证并发操作之目的,隔离有多种级别;
  D:DURABILITY,持久性;事务一旦提交,其所做出的修改会永久保存;
  自动提交:单语句事务   autocommit={0|1};
  mysql> SELECT @@autocommit;
  +------------------------+
  | @@autocommit |
  +------------------------+
  |            1               |
  +------------------------+
  mysql> SET @@session.autocommit=0;
  手动控制事务:
  启动:START TRANSACTION
  提交:COMMIT
  回滚:ROLLBACK
  事务支持savepoints:

  SAVEPOINT>
  ROLLBACK [WORK] TO [SAVEPOINT]>
  RELEASE SAVEPOINT>  事务隔离级别:
  READ-UNCOMMITTED:读未提交 --> 脏读;
  READ-COMMITTED:读提交--> 不可重复读;
  REPEATABLE-READ:可重复读 --> 幻读;     mysql默认事务隔离级别;
  SERIALIZABLE:串行化;
  mysql> SELECT @@session.tx_isolation;
  +----------------------------------+
  | @@session.tx_isolation |
  +----------------------------------+
  | REPEATABLE-READ         |
  +----------------------------------+
  查看InnoDB存储引擎的状态信息:
  SHOW ENGINE innodb STATUS;
  手动编译安装mariadb
  一、安装cmake
  # yum install cmake
  二、编译安装
  # groupadd -r mysql
  # useradd -g mysql -r -d /mydata/data mysql
  # tar xf mysql-5.5.33.tar.gz
  # cd mysql-5.5.33
  # cmake   .  -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
  -DMYSQL_DATADIR=/mydata/data \
  -DSYSCONFDIR=/etc \
  -DWITH_INNOBASE_STORAGE_ENGINE=1 \
  -DWITH_ARCHIVE_STORAGE_ENGINE=1 \
  -DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
  -DWITH_READLINE=1 \
  -DWITH_SSL=system \
  -DWITH_ZLIB=system \
  -DWITH_LIBWRAP=0 \
  -DMYSQL_UNIX_ADDR=/tmp/mysql.sock \
  -DDEFAULT_CHARSET=utf8 \
  -DDEFAULT_COLLATION=utf8_general_ci
  # make
  # make install
  指定安装文件的安装路径时常用的选项:
  -DCMAKE_INSTALL_PREFIX=/usr/local/mysql
  -DMYSQL_DATADIR=/data/mysql
  -DSYSCONFDIR=/etc
  默认编译的存储引擎包括:csv、myisam、myisammrg和heap。若要安装其它存储引擎,可以使用类似如下编译选项:
  -DWITH_INNOBASE_STORAGE_ENGINE=1
  -DWITH_ARCHIVE_STORAGE_ENGINE=1
  -DWITH_BLACKHOLE_STORAGE_ENGINE=1
  -DWITH_FEDERATED_STORAGE_ENGINE=1
  若要明确指定不编译某存储引擎,可以使用类似如下的选项:
  -DWITHOUT__STORAGE_ENGINE=1
  比如:
  -DWITHOUT_EXAMPLE_STORAGE_ENGINE=1
  -DWITHOUT_FEDERATED_STORAGE_ENGINE=1
  -DWITHOUT_PARTITION_STORAGE_ENGINE=1
  如若要编译进其它功能,如SSL等,则可使用类似如下选项来实现编译时使用某库或不使用某库:
  -DWITH_READLINE=1
  -DWITH_SSL=system
  -DWITH_ZLIB=system
  -DWITH_LIBWRAP=0
  其它常用的选项:
  -DMYSQL_TCP_PORT=3306
  -DMYSQL_UNIX_ADDR=/tmp/mysql.sock
  -DENABLED_LOCAL_INFILE=1
  -DEXTRA_CHARSETS=all
  -DDEFAULT_CHARSET=utf8
  -DDEFAULT_COLLATION=utf8_general_ci
  -DWITH_DEBUG=0
  -DENABLE_PROFILING=1
  如果想清理此前的编译所生成的文件,则需要使用如下命令:
  make clean
  rm CMakeCache.txt


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-611927-1-1.html 上篇帖子: mysql修改 innodb_buffer_pool 大小笔记 下篇帖子: MySQL报错:ERROR 1064 (42000): You have an error in。。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表