mysql基本知识

Mysql知识

(1)mysql索引知识

MySQL索引是用于提高数据库查询性能的一种数据结构。索引可以使查询更加高效,减少数据扫描的时间,从而加快查询速度。以下是关于MySQL索引的一些重要知识:
 
1. 索引类型:
   - 主键索引(Primary Key Index):用于唯一标识每一行数据的索引,一张表只能有一个主键索引。
   - 唯一索引(Unique Index):要求值在索引列中唯一,但允许有空值。
   - 普通索引(Normal Index):最基本的索引类型,用于加快查询操作的速度。
   - 全文索引(Full-Text Index):用于全文搜索,可以匹配关键词的出现频率、位置等。
 
2. 创建索引:
   - 在表创建时添加索引:可以在CREATE TABLE语句中使用INDEX关键字来为一个或多个列创建索引。
   - ALTER TABLE命令:使用ALTER TABLE语句可以为已经存在的表添加索引。
   - CREATE INDEX命令:使用CREATE INDEX语句可以在已经存在的表上添加索引。
 
3. 索引的优势和劣势:
   - 优势:加快查询速度,减少数据扫描的时间;提高数据的唯一性和完整性;加速表的连接(JOIN)操作。
   - 劣势:占用更多的存储空间;对于插入、更新和删除操作,需要额外的维护工作;过多或不正确的索引可能导致性能下降。
 
4. 聚集索引和非聚集索引:
   - 聚集索引(Clustered Index):物理上决定了表中数据的存储顺序,一个表只能有一个聚集索引。
   - 非聚集索引(Non-Clustered Index):不影响表中数据的物理存储顺序,一个表可以有多个非聚集索引。
 
5. 索引使用的注意事项:
   - 根据查询需求创建合适的索引,选择适当的索引类型。
   - 避免过多的索引,只为常用的查询列创建索引。
   - 更新频繁的列不适合创建索引。
   - 定期维护和优化索引,删除不必要或重复的索引。
 
了解和正确使用MySQL索引可以大大提高数据库查询性能,但需要根据实际需求和数据特点做出权衡和选择。在数据库设计和查询优化中合理使用索引是非常重要的一环。

(2) 数据库的优化

1.从结构层: web服务器采用负载均衡服务器,mysql服务器采用主从复制,读写分离
2.从储存层: 采用合适的存储引擎,采用三范式
3.从设计层: 采用分区分表,索引,开启mysql缓存
4.sql语句层:采用效率高,速度快节省资源的sql语句执行

(3) 如何通俗地理解三个范式?

第一范式:1NF是对属性的原子性约束,要求属性具有原子性,不可再分解
第二范式:2NF是对记录的惟一性约束,要求记录有惟一标识,即实体的惟一性(通常使用主键来完成)
第三范式:3NF是对字段冗余性的约束,即任何字段不能由其他字段派生出来,它要求字段没有冗余
(一个字段的内容重复出现多次或者可以在另一张表中可以推算出来的数据 即为冗余数据)

(4) Mysql的存储引擎,myisam和innodb
(5)什么是事务?及其特性?

如果任何一个sql语句操作失败那么整个操作就被失败,操作会回滚到操作前状态语句要么执行,要么不执行
事务特性:
A、原子性。即不可分割性,事务要么全部被执行,要么就全部不被执行。
B、一致性或可串性。事务的执行使得数据库从一种正确状态转换成另一种正确状态
C、隔离性。在事务正确提交之前,不允许把该事务对数据的任何改变提供给任何其他事务
D、持久性。事务正确提交,结果将永久保存在数据库,即使之后出现其他故障,事务处理结果也会得到保存

(6)查看sql语句的效率(explain关键字)

输入sql语句“EXPLAIN select * from users”,
前面加了EXPLAIN,则查询语句在执行时,会记录执行过程效率。
 
explain命令展示MySQL如何使用索引来处理select语句以及连接表。可以帮助选择更好的索引和写出更优化的查询语句。
注:explain只对select查询做解释,insert、update、delete不会
expain出来的信息有10列,分别是id、select_type、table、type、possible_keys、key、key_len、ref、rows、Extra
概要描述:
id:选择标识符
select_type:表示查询的类型。
table:输出结果集的表
partitions:匹配的分区
type:表示表的连接类型
possible_keys:表示查询时,可能使用的索引
key:表示实际使用的索引
key_len:索引字段的长度
ref:列与索引的比较
rows:扫描出的行数(估算的行数)
filtered:按表条件过滤的行百分比
Extra:执行情况的描述和说明

(7)sql查询优化

1.首先应考虑在 where 及 order by 涉及的列上建立索引。索引不能过多,不利于删除,插入等操作。
2.应尽量避免在 where 子句中对字段进行 null 值判断,将导致引擎放弃使用索引而进行全表扫描
3.应尽量避免在 where 子句中使用!=或<>操作符,将引擎放弃使用索引而进行全表扫描
4.应尽量避免在 where 子句中使用 or 来连接条件,将导致引擎放弃使用索引而进行全表扫描
5.合理使用like模糊查询,不要乱用
6.不要在 where 子句中进行函数、算术运算或其他表达式运算,否则系统将可能无法正确使用索引。
7.不要写一些没有意义的查询
8.很多时候用 exists 代替 in 是一个好的选择
9.选择合适的字段类型,尽量使用数字型字段。
15.尽可能的使用 varchar 代替 char ,因为首先变长字段存储空间小,可以节省存储空间
16.任何地方都不要使用 select * from t ,用具体的字段列表代替“*”,不要返回用不到的任何字段。
17.避免频繁创建和删除临时表,以减少系统表资源的消耗。

(9)mysql主从复制,读写分离

主从复制原理,多台数据库服务器,一台做主,其他做从数据库,主数据库更新修改删除操作,都会同步到从数据库,类似备份的效果。
主从复制、读写分离一般是一起使用的。
目的很简单,就是为了提高数据库的并发性能。
你想,假设是单机,读写都在一台MySQL上面完成,性能肯定不高。
如果有三台MySQL,一台mater只负责写操作,
两台salve只负责读操作,性能不就能大大提高了吗?
所以主从复制、读写分离就是为了数据库能支持更大的并发。
 
优点:
(1) 在从服务器可以执行查询工作(即我们常说的读功能),降低主服务器压力;(主库写,从
库读,降压)
(2) 在从主服务器进行备份,避免备份期间影响主服务器服务;(确保数据安全)
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ZH蔚来

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值