数据库相关知识学习

1. mysql与redis的区别
mysql与redis的区别有:
(1) 在类型上,mysql是关系型数据库,redis是缓存数据库;
(2) 在作用上,mysql用于持久化的存储数据到硬盘,其功能非常强大,而redis用于存储使用较为频繁的数据到缓存中,读取速度快;
(3) 在需求上,mysql和redis因为需求的不同,一般都是配合使用。
2. 进程与线程
类型多进程多线程
数据共享数据私有,每个进程独立占有共享进程的数据
内存CPU占用内存多,CPU使用率较低占用内存少,CPU使用率较高
可靠性进程间资源隔离,是私有的,因此可靠性高在进程内运行,一个异常会导致整个进程异常

mysql是多线程架构。

3. 线程有哪些(拿innodb来说)
1. Master线程:负责将缓冲区脏数据(在缓存中、未落盘的数据)刷入磁盘,保证数据的一致性。
2. IO线程:主要负责处理IO请求,就是读写操作这些。
3. Purge线程:处理不需要的undo空间,可以理解为清除垃圾、回收空间。
4. Page cleaner线程:它是为了减轻master线程的压力,作用是将脏页刷新放到单独的线程中。
5. 错误监控线程:当所有线程出现报告错误,并对应做一些处理的线程。
6. 锁监控线程:处理锁等待和死锁处理的线程。

补充:1. 锁是为了解决并发访问的一种资源。
2. 死锁就是两个进程或线程互相等待。

4. innodb的内存结构
innodb存储引擎内存由以下三个部分组成:缓冲池(buffer pool),重做日志缓存(redo log buffer),额外的内存池(additional

 memory pool)。
 可以使用 show engine innodb status来查看innodb_buffer_pool的使用情况。

innodb_buffer_pool_size:具体看,缓冲池中的数据库类型有:索引页、数据库页、undo页、插入缓存页(insert buffer)、自适应

hash(adaptive hashindex)、innodb存储的锁信息(lock info)、数据字典信息(data dictionary)InnoDB工作方式:将数据文件按页(每页16K)读入InnoDBbuffer pool,然后按最近最少使用算法(LRU)保留缓存数据,最后通过一定频率将脏页刷新到文件。

缓冲池,用于CPU和磁盘之间,来提高性能。例如,表的读取和修改都是在这里完成的。它的大小通过innodb_buffer_pool_size设置。

5. 生产环境中如何批量更改mysql引擎
alter table table_name ENGINE = INNODB
6. innodb和myisam存储引擎
innodb支持事务,支持行锁、表锁,适用于oltp在线事务处理场景,目前最为常用。
myisam不支持事务,只支持表锁,适用于olap联机分析场景。
7. innodb与myisam的选择
当你的数据库有大量的写入、更新操作而查询比较少或者数据完整性要求比较高的时候就选择innodb表。
当你的数据库主要以查询为主,相比较而言更新和写入比较少,并且业务方面数据完整性要求不那么严格,就选择mysiam表。因为mysiam表的查询操作效率和速度都比innodb要快。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值