For investors
股价:
5.36 美元 %For investors
股价:
5.36 美元 %认真做教育 专心促就业
7、深度分页(超大分页)怎么处理?
·用id优化:先找到上次分页的最大ID,然后利用id上的索引来查询,类似于select * from user where id>1000000 limit 100。
·用覆盖索引优化:Mysql的查询完全命中索引的时候,称为覆盖索引,是非常快的,因为查询只需要在索引上进行查找,之后可以直接返回,而不用再回表拿数据。因此我们可以先查出索引的ID,然后根据Id拿数据。
·在业务允许的情况下限制页数
8、日常开发中你是怎么优化SQL的?
·添加合适索引:对作为查询条件和order by的字段建立索引,对于多个查询字段的考虑建立组合索引,同时注意组合索引字段的顺序,将最常用作限制条件的列放在最左边,依次递减,索引不宜太多,一般5个以内。
·优化表结构:数字型字段优于字符串类型,数据类型更小通常更好,尽量使用 NOT NULL
·优化查询语句:分析SQl执行计划,是否命中索引等,如果SQL很复杂,优化SQL结构,如果表数据量太大,考虑分表
9、MySQL 的并发连接与并发查询什么区别?
·在执行show processlist的结果里,看到了几千个连接,指的是并发连接。
·而"当前正在执行"的语句,才是并发查询。
·并发连接数多影响的是内存。
·并发查询太高对CPU不利。一个机器的CPU核数有限,线程全冲进来,上下文切换的成本就会太高。
·需要注意的是,在线程进入锁等待以后,并发线程计数减一,所以等行锁或者间隙锁时的线程是不算在计数范围内的。也就是说进入锁等待的线程不吃CPU,从而避免整个系统锁死。
10、MySQL更新字段值为原来的值内部是怎么操作呢?
·相同的数据时,不会做update更新。
·不过对不同的binlog格式,处理的日志方式有所不同:
1)基于row模式时,server层匹配到要更新的记录,发现新值和旧值一致,不做更新,就直接返回,也不记录binlog。
2)基于 statement 或者 mixed格式时,MySQL执行 update 语句,并把更新语句记录到binlog。
11、datetime和timestamp有什么区别?
·datetime 的日期范围是 1001——9999 年;timestamp 的时间范围是 1970——2038 年
·datetime 存储时间与时区无关;timestamp 存储时间与时区有关,显示的值也依赖于时区
·datetime 的存储空间为 8 字节;timestamp 的存储空间为 4 字节
·datetime 的默认值为 null;timestamp 的字段默认不为空(not null),默认值为当前时间(current_timestamp)
12、事务的隔离级别有哪些?
·「读未提交」(Read Uncommitted)最低级别,任何情况都无法保证
·「读已提交」(Read Committed)可避免脏读的发生
·「可重复读」(Repeatable Read)可避免脏读、不可重复读的发生
·「串行化」(Serializable)可避免脏读、不可重复读、幻读的发生
·Mysql默认的事务隔离级别是「可重复读」(Repeatable Read)
13、在 MySQL 中有两个 kill 命令
·kill query + 线程 id,表示终止这个线程中正在执行的语句
·kill connection + 线程 id,这里 connection 可缺省,表示断开这个线程的连接
以上就是“广州MySQL数据库经典问答”的内容啦,如果你在广州想零基础学习编程,广州达内教育是个不错的选择,零基础教课,由浅入深培训,学完免费推荐就业!点击下方图片,快来申请免费试听课程吧!
【免责声明】本文部分系转载,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与联系我们,我们会予以更改或删除相关文章,以保证您的权益!