MYSQL常见问题

MySQL常见问题

1、mysql的存储引擎概述

InnoDB:默认引擎(用的最多),支持事务、支持行级锁(粒度更细,可以具体锁上某一条数据)
MRG_MYISAM:5.1.x及之前版本默认,不支持事务、表级锁(粒度更粗,只要操作表中某一条数据,他都会锁表)
CSV:存为CSV,逗号分隔的文件,几乎不用
BLACKHOLE:黑洞存储引擎,数据可以写入,无法读物,写入的数据都会消失
MEMORY:数据存储在内存中,读取速度快,在临时表中有用,工作中不用
ARCHIVE:归档村粗引擎

eg:mysql通过命令查看

mysql> show engines;
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| Engine             | Support | Comment                                                        | Transactions | XA   | Savepoints |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| InnoDB             | DEFAULT | Supports transactions, row-level locking, and foreign keys     | YES          | YES  | YES        |
| MRG_MYISAM         | YES     | Collection of identical MyISAM tables                          | NO           | NO   | NO         |
| CSV                | YES     | CSV storage engine                                             | NO           | NO   | NO         |
| BLACKHOLE          | YES     | /dev/null storage engine (anything you write to it disappears) | NO           | NO   | NO         |
| MEMORY             | YES     | Hash based, stored in memory, useful for temporary tables      | NO           | NO   | NO         |
| MyISAM             | YES     | MyISAM storage engine                                          | NO           | NO   | NO         |
| ARCHIVE            | YES     | Archive storage engine                                         | NO           | NO   | NO         |
| PERFORMANCE_SCHEMA | YES     | Performance Schema                                             | NO           | NO   | NO         |
| FEDERATED          | NO      | Federated MySQL storage engine                                 | NULL         | NULL | NULL       |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+

2、什么是事务:所有关系型数据库中都存在事务
事务:数据库的操作,要么同时成功,要么同时失败,不允许有第三种状态
A:原子性,事务是一个整体,是最小单位,不可分割
C:一致性,事务前后数据是一致的
I:隔离性,事务与事务之间是隔离的,互不影响
D:持久性,事务一旦执行成功,他对数据的影响是持久性的,不可更改(不可逆)

3、索引
索引的目的是加快查询速度
索引的数据类型:B+ tree
在MySQL中,有以下几种常见的索引类型:

  1. 主键索引:MySQL有主键,主键列默认自带索引,是系统帮你创建的,不需要额外创建
  2. 唯一索引:MySQL的唯一键,只要是唯一列,这个列就自带索引,不需要额外创建
  3. 单列、简单索引:MySQL中的普通列,这个列默认没索引,额外给这个列创建的索引,这个列就是单列索引
  4. 多列、组合索引:MySQL中多个普通的列,放在一起,他们一起来创建一个索引,这个索引称之为组合索引,多列索引,联合索引等(name、age、sex)、(name、address)
  5. B-Tree索引:B-Tree(平衡树)索引是MySQL中最常用的索引类型。它适用于等值查询、范围查询和排序等操作。B-Tree索引适用于所有存储引擎。
  6. 哈希索引:哈希索引基于哈希算法,将索引列的值转换为哈希码,并将哈希码映射到索引。哈希索引适用于等值查询,但不支持范围查询和排序。哈希索引只适用于Memory存储引擎和MyISAM存储引擎。
  7. 全文索引:全文索引用于对文本内容进行全文搜索。它适用于在文本列上执行关键词搜索和模糊匹配等操作。全文索引只适用于MyISAM存储引擎和InnoDB存储引擎的全文索引插件。
  8. 空间索引:空间索引用于存储和查询基于空间数据的信息,如地理位置数据等。它支持空间数据类型和空间查询操作。空间索引只适用于MyISAM存储引擎和InnoDB存储引擎的空间索引插件。

除了以上几种常见的索引类型,MySQL还支持一些特殊的索引类型,如前缀索引、复合索引、唯一索引、多列索引等,这些索引类型可以根据具体情况选择使用。不同的索引类型适用于不同的查询场景,使用合适的索引类型可以提高查询性能和效率。

索引的优缺点:

优点:创建索引可以大大提高系统的性能。
1、通过创建唯一性索引可保证数据库表中每一行数据的唯一性。
2、可加快数据的检索速度,这也是创建索引的最主要的原因。
3、可加速表和表之间的连接,特别是在实现数据的参考完整性方面特别有意义。
4、在使用分组和排序子句进行数据检索时,同样可以显著减少查询中分组和排序的时间。
5、通过使用索引,可以在查询的过程中,使用优化隐藏器,提高系统的性能。
缺点:
1、创建和维护索引需要耗费时间,这种时间随着数据量的增加而增加,这样就降低了数据的维护速度。
2、索引需要占物理空间,除了数据表占数据空间之外,每一个索引还要占一定的物理空间。如果要建立聚簇索引,那么需要的空间就会更大。

4.MySQL有哪些数据库类型
mysql终端依次操作查看:

mysql>help -->help contents -->help Data Types;
You asked for help about help category: "Data Types"
For more information, type 'help <item>', where <item> is one of the following
topics:
   AUTO_INCREMENT
   BIGINT
   BINARY
   BIT
   BLOB
   BLOB DATA TYPE
   BOOLEAN
   CHAR
   CHAR BYTE
   DATE
   DATETIME
   DEC
   DECIMAL
   DOUBLE
   DOUBLE PRECISION
   ENUM
   FLOAT
   INT
   INTEGER
   LONGBLOB
   LONGTEXT
   MEDIUMBLOB
   MEDIUMINT
   MEDIUMTEXT
   SET DATA TYPE
   SMALLINT
   TEXT
   TIME
   TIMESTAMP
   TINYBLOB
   TINYINT
   TINYTEXT
   VARBINARY
   VARCHAR
   YEAR DATA TYPE

5.在MySQL中,如果你在没有使用GROUP BY的情况下使用MAX()函数,可能会报错。这是因为MySQL在执行查询时会启用"only_full_group_by"模式,该模式要求SELECT列表中的每个非聚合列都必须在GROUP BY子句中列出。因此,如果你使用了MAX()函数但没有使用GROUP BY子句,MySQL将无法确定应该返回哪个值作为最大值,从而导致报错。

MySQL8.0及以上,可通过设置sql_mode来禁"only_full_group_by"模式,这样就可以在没有GROUP BY的情况下使用MAX()函数。具体操作可以参考MySQL官方文档中关于GROUP BY的处理方式,具体的报错信息和行为可能会受到MySQL版本和配置的影响,因此建议根据实际情况进行调整和验证。

Linux

1、说说常用的Linux命令

1、ps,查看历史进程
jps,查看java进程
ps -ef | grep xxxx
ps -ef | grpe mysql

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值