mysql常见

  1. 索引的为什么使查询加快?有啥缺点?

默认的方式是根据搜索条件进行全表扫描,遇到匹配条件的就加入搜索结果集合。如果我们对某一字段增加索引,查询时就会先去索引列表中一次定位到特定值的行数,大大减少遍历匹配的行数,所以能明显增加查询的速度
缺点:

创建索引和维护索引要耗费时间,这种时间随着数据量的增加而增加
索引需要占物理空间,除了数据表占用数据空间之外,每一个索引还要占用一定的物理空间,如果需要建立聚簇索引,那么需要占用的空间会更大
以表中的数据进行增、删、改的时候,索引也要动态的维护,这就降低了整数的维护速度

  1. sql语句左外连接 右外连接 内连接 全连接区别
    pass

  2. mysql数据备份方式,如何恢复?你们的备份策略是什么?
    物理完全备份
    备份所有数据库文件:/var/lib/mysql/
    备份所有binlog文件: /var/lib/mysql/mysql-bin.
    备份选项文件: /etc/my.cnf

mysqldump逻辑备份
mysqldump -uroot -p —all-databases > /backup/mysqldump/all.db

物理备份恢复
mv /var/lib/mysql /var/lib/mysql.old #先把原来的数据目录改名
cp -a /backups/mysql /var/lib

逻辑备份数据恢复
mysql > use db_name
mysql > source /backup/mysqldump/db_name.db

  1. 如何配置数据库主从同步,实际工作中是否遇到数据不一致问题?如何解决?
    为每个服务器配置唯一值的server-id

主库
开启binlog日志
创建主从复制用户
查看master的状态

从库
change master to设置主库信息
start slave开始复制

  1. mysql约束有哪些?
    非空约束
    唯一约束
    主键约束
    外键约束

  2. 二进制日志(binlog)用途?
    BINLOG记录数据库的变更过程。例如创建数据库、建表、修改表等DDL操作、以及数据表的相关DML操作,这些操作会导致数据库产生变化,开启binlog以后导致数据库产生变化的操作会按照时间顺序以“事件”的形式记录到binlog二进制文件中

  3. mysql数据引擎有哪些?
    常用的 myisam、innodb
    区别:
    InnoDB 支持事务,MyISAM 不支持,这一点是非常之重要。事务是一种高级的处理方式,如在一些列增删改中只要哪个出错还可以回滚还原,而 MyISAM就不可以了;
    MyISAM 适合查询以及插入为主的应用,InnoDB 适合频繁修改以及涉及到安全性较高的应用;
    InnoDB 支持外键,MyISAM 不支持;
    MyISAM 是默认引擎,InnoDB 需要指定;
    InnoDB 不支持 FULLTEXT 类型的索引;
    InnoDB 中不保存表的行数,如 select count() from table 时,InnoDB;需要扫描一遍整个表来计算有多少行,但是 MyISAM 只要简单的读出保存好的行数即可。注意的是,当 count()语句包含 where 条件时 MyISAM 也需要扫描整个表;
    对于自增长的字段,InnoDB 中必须包含只有该字段的索引,但是在 MyISAM表中可以和其他字段一起建立联合索引;
    清空整个表时,InnoDB 是一行一行的删除,效率非常慢。MyISAM 则会重建表;
    InnoDB 支持行锁(某些情况下还是锁整表,如 update table set a=1 where user like ‘%lee%’

  4. 如何查询mysql数据库存放路径?

mysql> show variables like 'datadir%';
+---------------+------------------------+
| Variable_name | Value                  |
+---------------+------------------------+
| datadir       | /usr/local/mysql/data/ |
+---------------+------------------------+
1 row in set (0.00 sec)
  1. mysql数据库文件后缀名有哪些?用途什么?
    myisam
    .frm文件:保护表的定义
    .myd:保存表的数据
    .myi:表的索引文件

innodb
.frm:保存表的定义
.ibd:表空间

  1. 如何修改数据库用户的密码?
mysql8之前

set password for 用户名@localhost = password('新密码'); 
mysqladmin -u用户名 -p旧密码 password 新密码  
update user set password=password('123') where user='root' and host='localhost';
mysql8之后

# mysql8初始对密码要求高,简单的字符串不让改。先改成:MyNewPass@123;
alter user 'root'@'localhost' identified by 'MyNewPass@123';
# 降低密码难度
set global validate_password.policy=0;
set global validate_password.length=4;
# 修改成简易密码
alter user 'root'@'localhost'IDENTIFIED BY '1111';
  1. 如何修改用户权限?如何查看?

授权:
grant all on . to user@’%’ identified by ‘passwd’

查看权限
show grants for user@’%’;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值