这是我参与「第五届青训营 」笔记创作活动的第10天
一个关系型数据库大概率是会被并发访问的,如果要保证并发安全,除了在行数据上加悲观锁还有其他方式吗?
除了在行数据上加悲观锁外,还有一些其他的方式可以保证并发安全: 乐观锁:在读取数据时,记录数据版本号或时间戳,并在更新时检查数据版本或时间戳是否一致。如果不一致,表示在更新期间该数据已经被其他事务更新,需要回滚事务或者重试。 MVCC:多版本并发控制。在读取数据时,记录事务的时间戳或版本号,并根据事务的时间戳或版本号获取相应的数据版本。在更新数据时,生成新的数据版本,并保存旧的版本,从而实现多版本的并发控制。 分布式锁:在分布式系统中,可以使用分布式锁来保证并发安全。例如,使用Zookeeper等分布式协调服务来获取全局锁,避免多个事务同时修改同一行数据。 这些方式可以提高并发性能,减少锁等待时间和死锁等问题,提高数据库的并发访问能力。
在数据库领域,把数据按行存和按列存各有好处,你能从性能优先的角度设计出一种混合存储格式吗?
从性能优先的角度设计混合存储格式可以采用一种称为"列式存储"的格式,它结合了行式存储和列式存储的优点。在这种格式下,数据在物理上被按照列存储,每个列单独压缩和编码,以提高查询性能和压缩效率。但是,在查询时,可以通过仅读取所需的列来避免读取整个行,从而减少了I/O的数量和查询时间。这种存储格式适用于具有大量列的宽表,能够提高数据仓库和数据分析等应用程序的性能