面试题合集
文章平均质量分 79
Wei_Hss
什么都想学,什么都学不会
展开
-
悲观锁、乐观锁以及分布式锁
当数据库执行select for update时会获取被select中的数据行的行锁,因此其他并发执行的select for update如果试图选中同一行则会发生排斥(需要等待行锁被释放),因此达到锁的效果。1.2.1乐观锁,也叫乐观并发控制,它假设多用户并发的事务在处理时不会彼此互相影响,各事务能够在不产生锁的情况下处理各自影响的那部分数据。冲突频率: 如果冲突频率非常高,建议采用悲观锁,保证成功率,如果冲突频率大,乐观锁会需要多次重试才能成功,代价比较大。悲观锁特点:先获取锁,再进行业务操作。原创 2023-02-11 12:00:00 · 2685 阅读 · 2 评论 -
MySQL数据库
该参数支持在会话级别修改,方便应用在会话级别单独设置某些特殊操作的行锁等待超时时间,如下:set innodb_lock_wait_timeout=1000;MyISAM:只支持表级锁,用户在操作MyISAM表时,select,update,delete,insert语句都会给表自动加锁,如果加锁以后的表满足insert并发的情况下,可以在表的尾部插入新的数据。那么对应的解决死锁问题的关键就是:让不同的session加锁有次序。死锁的关键在于:两个(或以上)的Session加锁的顺序不一致。原创 2023-02-09 12:00:00 · 452 阅读 · 0 评论 -
数据库索引
这是因为,由于这些列的取值很少,例如人事表的性别列,在查询的结果中,结果集的数据行占了表中数据行的很大比例,即需要在表中搜索的数据行的比例很大。2.索引需要占物理空间,除了数据表占数据空间之外,每一个索引还要占一定的物理空间,如果要建立聚簇索引,那么需要的空间就会更大。索引是建立在数据库表中的某些列的上面。(5)在经常需要排序的列上创建索引,因为索引已经排序,这样查询可以利用索引的排序,加快排序查询时间;3.当对表中的数据进行增加、删除和修改的时候,索引也要动态的维护,这样就降低了数据的维护速度。原创 2023-02-08 12:00:00 · 444 阅读 · 0 评论 -
数据库优化
比如:根节点存储大于50和小于50两个范围,两个分支节点,大于50的分支节点存储50-60、60-70、大于100等区段,每个区段都有对应的叶子节点,比如大于100的区段下面的叶子节点存储100、101、102和对应的rowid等具体数据,100、101、102的值即为表中建立索引的列(比如:num)的值,当编写sql语句where num=101时,就会通过检索索引表,查询到叶子节点上存储的rowid,然后根据rowid查询对应的数据,避免了对数据表的全表扫描。它必须在编译时进行选择。原创 2023-02-05 18:00:00 · 423 阅读 · 0 评论 -
高并发/性能调优/架构
系统直接的接口调用通过dubbo,比如我们项目调用财务系统的支付接口,该接口就是由财务系统将地址发布到dubbo,然后我们写http客户端去调用dubbo,由dubbo将请求转发财务系统。,将查询多修改少的数据放入缓存(比如:产品列表啊),页面显示产品列表时直接从缓存中获取,无需通过数据查询,减少IO操作,大大提高的查询的速度,同时也减轻了对数据库的压力。,将用户请求分发到集群环境中的不同服务器,降低了单个服务器的压力,起到负载均衡的作用,增加系统的并发处理能力,可以处理更多的用户请求;原创 2023-02-04 18:00:00 · 609 阅读 · 0 评论