段锁并发控制算法的高效性分析_第1页
段锁并发控制算法的高效性分析_第2页
段锁并发控制算法的高效性分析_第3页
段锁并发控制算法的高效性分析_第4页
段锁并发控制算法的高效性分析_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1/1段锁并发控制算法的高效性分析第一部分段锁的并发优势 2第二部分乐观并发的效率分析 4第三部分冲突检测的优化策略 6第四部分事务执行时间的度量 8第五部分可伸缩性和吞吐量能力 10第六部分系统开销与性能权衡 12第七部分不同应用场景下的表现评估 15第八部分段锁与其他并发控制算法比较 17

第一部分段锁的并发优势关键词关键要点段锁的并发优势

主题名称:锁开销优化

1.段锁仅对数据段加锁,而传统锁需要对整个表或页面加锁,极大地减少了锁的开销。

2.段锁的粒度更细,能够更精确地控制并发访问,避免了不必要的锁等待和死锁的发生。

3.段锁支持多粒度锁机制,可以针对不同类型的操作(如读操作、写操作)使用不同的锁粒度,进一步优化锁开销。

主题名称:并发读优化

段锁的并发优势

段锁是一种并发控制算法,它将数据库中的数据划分为更小的段,并对每个段使用单独的锁。与表锁或页锁等其他并发控制算法相比,段锁提供了显着的并发优势:

1.细粒度锁定:

段锁比表锁或页锁具有更细的粒度,因为它只锁定数据的一部分(段),而不是整个表或页。这意味着在并发环境中,多个事务可以同时访问不同段的数据,从而减少了锁定冲突并提高了并发性。

2.更少的锁定等待:

由于段锁的粒度较细,因此事务持有的锁较少,并且不太可能发生锁定等待。当一个事务需要访问特定段的数据时,它只锁定该段,而不是整个表或页。这减少了争用和死锁的可能性,进而提高了并发性。

3.提高查询吞吐量:

段锁通过减少锁定冲突和等待时间来提高查询吞吐量。多个事务可以并发地执行查询,访问不同段的数据,而不会因锁定而相互阻塞。这可以显著提高数据库系统的整体性能。

4.更好的伸缩性:

段锁在高并发环境中具有更好的伸缩性。当数据库负载增加时,段锁可以允许更多的并发事务访问数据,而不会显著降低性能。这是因为细粒度的锁定机制可以减少锁定争用,即使在大量并发事务的情况下也是如此。

5.减少死锁:

段锁通过避免死锁来提高并发性。由于事务只锁定它们需要的特定段,因此它们不太可能与锁定其他段的其他事务发生冲突。这大大减少了死锁的可能性,确保了数据库系统的稳定性和可用性。

6.提高数据可用性:

段锁通过减少锁定冲突和等待时间来提高数据可用性。多个事务可以同时访问不同段的数据,而不会相互阻塞,确保了对数据的连续访问。这对于需要实时数据访问的应用程序和系统至关重要。

7.支持复杂查询:

段锁支持复杂查询,其中涉及多个数据段。通过只锁定查询所需的段,段锁允许多个查询并行执行,而不会发生锁定冲突。这提高了查询性能并确保了对数据的及时访问。

8.减少锁升级:

段锁可以减少锁升级,这在表锁或页锁中很常见。当一个事务需要访问多个段的数据时,它只锁定这些段,而不是升级到表锁或页锁。这减少了锁定争用和死锁的可能性,进一步提高了并发性。

总结:

段锁并发控制算法通过提供细粒度锁定、减少锁定等待、提高查询吞吐量、更好的伸缩性、减少死锁、提高数据可用性、支持复杂查询和减少锁升级来实现并发优势。这些优点使得段锁成为高并发数据库环境的理想选择。第二部分乐观并发的效率分析关键词关键要点【乐观并发的效率分析】

1.冲突概率低时的高效性:在冲突概率较低的情况下,乐观并发算法无需执行回滚操作,因此效率高于悲观并发算法。

2.冲突检测机制的开销:乐观并发算法需要对并发事务进行冲突检测,该检测机制会带来一定的开销。

3.事务规模的影响:事务规模越大,冲突发生的概率越高,乐观并发算法的效率优势将逐渐减弱。

【乐观并发算法的扩展】

乐观并发的效率分析

乐观并发控制算法基于一个假设,即冲突很少发生。因此,它允许事务在没有锁定的情况下并发执行,直到它们尝试提交为止。如果检测到冲突,则回滚其中一个事务。

乐观并发算法的效率优势

*高吞吐量:在低冲突场景中,乐观并发算法可以实现极高的吞吐量。由于没有显式锁定,事务可以自由执行,不会因等待锁而阻塞。

*低延迟:由于事务在未锁定状态下执行,因此它们可以更快地完成。这对于交互式应用程序和实时系统至关重要。

*可扩展性:随着系统负载的增加,乐观并发算法可以很好地扩展。这是因为它的无锁设计消除了锁争用和死锁。

乐观并发算法的效率指标

为了评估乐观并发算法的效率,可以使用以下指标:

*冲突率:冲突检测和回滚的事务数量与执行事务总数的比率。

*回滚率:由于冲突而被回滚的事务数量与提交事务总数的比率。

*吞吐量:单位时间内提交的事务数量。

*延迟:从事务开始到提交或回滚所需的时间。

影响效率的因素

乐观并发算法的效率受以下因素影响:

*并发级别:系统中同时执行的事务数量。

*冲突概率:同一数据项被多个事务访问的可能性。

*事务大小:每个事务执行的数据修改数量。

*数据访问模式:事务访问数据的顺序。

优化乐观并发算法的效率

可以通过以下方法优化乐观并发算法的效率:

*减少冲突概率:通过使用分区、散列或其他技术将相关数据分散在多个服务器上。

*减少事务大小:通过在事务中执行较小的数据修改来减少冲突的范围。

*优化数据访问模式:通过对相关数据使用范围锁定或多版本并发控制来减少冲突。

与悲观锁定的比较

*优势:高吞吐量、低延迟和可扩展性。

*劣势:冲突率和回滚率可能很高,尤其是在高冲突场景中。

*适用场景:适合冲突率较低和并发性高的读写密集型应用程序。

结论

乐观并发算法在低冲突场景中提供高效的并发控制。通过减少冲突概率、优化事务大小和数据访问模式,可以进一步提高其效率。然而,重要的是要考虑特定用例的特性,以确定乐观并发是否适合。第三部分冲突检测的优化策略冲突检测的优化策略

段锁并发控制算法针对解决并发环境下数据访问的冲突问题,提出了多种优化策略,其中包括冲突检测的优化。以下对其进行详细阐述:

1.加锁粒度的优化

段锁在并发环境的数据访问控制中,采取分段的方式,将数据对象划分成多个更小的数据段,每个数据段拥有一个独立的锁。通过这种分段锁机制,可以有效缩小加锁范围,减少冲突检测的范围,从而提高并发效率。

2.意向锁的使用

意向锁是一种轻量级的锁机制,用于表示事务对数据段的访问意向。当事务对数据段进行读操作时,会获取读意向锁;当事务对数据段进行写操作时,会获取写意向锁。通过意向锁,事务在访问数据段之前,可以提前了解其他事务的访问意向,从而避免不必要的冲突检测。

3.锁升级优化

锁升级优化策略是指,当事务对数据段加锁后,如果后续操作需要对该数据段进行更高级别的操作,则将锁升级为更高级别的锁。例如,如果事务对数据段获取了读锁,后续需要对其进行写操作,则需要将读锁升级为写锁。通过锁升级优化,可以避免多次加解锁操作,提升并发效率。

4.批量加锁优化

批量加锁优化策略是指,当事务需要对多个数据段进行操作时,通过一次批量加锁操作,同时获取所有相关数据段的锁。这种批量加锁方式可以减少加锁操作的次数,降低加锁开销,提升并发效率。

5.延迟加锁优化

延迟加锁优化策略是指,在事务执行过程中,推迟对数据段加锁的时间,仅在真正需要对数据段进行操作时才加锁。这种延迟加锁方式可以减少不必要的加锁操作,提升并发效率。

6.无锁优化

无锁优化是一种特殊的情况,当事务对数据段的操作不会造成冲突时,可以不使用锁机制。例如,事务对数据段进行只读操作,或者对不同数据段进行不冲突的操作,则可以不加锁。通过无锁优化,可以进一步提高并发效率。

以上是段锁并发控制算法中冲突检测优化策略的主要内容。通过采用这些优化策略,段锁算法可以有效缩小加锁范围、减少冲突检测的开销,从而提高并发效率,满足并发环境下数据访问控制的需求。第四部分事务执行时间的度量事务执行时间的度量

在段锁并发控制算法中,事务执行时间的度量对于评估算法的效率至关重要。本文介绍了衡量事务执行时间的几种关键指标。

总执行时间

总执行时间是指事务从开始到提交或中止所需的时间。它包括所有操作的时间,例如读写数据、获取和释放锁、以及提交或中止事务。总执行时间是事务效率的一个总体衡量标准。

平均执行时间

平均执行时间是所有事务总执行时间的平均值。它提供了事务执行时间的平均水平,不受极端值的过度影响。平均执行时间有助于比较不同算法或系统配置下事务的整体效率。

标准偏差

标准偏差衡量事务执行时间分布的离散程度。它表示事务执行时间相对于平均时间的离散程度。较低的标准偏差表明事务执行时间更稳定和可预测,而较高的标准偏差则表明存在更大的可变性。

执行时间直方图

执行时间直方图是一个图形表示,它显示事务执行时间的分布。它将事务执行时间划分为间隔或桶,并显示每个桶中事务的数量。直方图有助于识别执行时间分布模式,例如是否具有峰值或偏态分布。

吞吐量

吞吐量是指单位时间内系统处理的平均事务数量。它衡量系统处理事务的能力。吞吐量与平均执行时间密切相关,更高的吞吐量通常表示更短的平均执行时间。

响应时间

响应时间是指用户发出事务请求到收到响应所需的时间。它包括执行时间和其他开销,例如网络延迟和服务器处理时间。响应时间对于用户体验至关重要,因为它衡量用户感知到的系统性能。

锁定等待时间

锁定等待时间是指事务因等待锁释放而阻塞的时间。它反映了并发争用的程度,并且是事务执行时间的一个重要组成部分。较长的锁定等待时间会显着降低吞吐量和响应时间。

隔离级别

隔离级别是指事务可以忍受多少并发。较高的隔离级别可防止更多的并发冲突,但也会导致更长的执行时间。隔离级别的选择会对事务执行时间产生重大影响。

通过衡量这些指标,段锁并发控制算法的效率可以得到全面的评估。这些指标对于识别性能瓶颈、优化算法参数以及比较不同算法至关重要。第五部分可伸缩性和吞吐量能力关键词关键要点可伸缩性

1.段锁并发控制算法允许并发事务同时访问和修改数据库中的不同数据片段,从而提高了系统的整体吞吐量和响应时间。

2.当数据库大小或并发事务数量增加时,段锁算法的扩展性良好,因为不需要为每个数据对象维护全局锁,从而减少了锁冲突和死锁的可能性。

3.通过将数据划分为较小的段并对每个段分别加锁,段锁算法可以避免锁争用,从而提高并发性和吞吐量。

吞吐量能力

1.段锁算法可以显著提高系统的吞吐量,因为它允许多个事务同时访问和修改不同的数据段,从而减少了锁等待时间。

2.由于每个数据段都有自己的锁,事务可以并行执行,而不会受到其他事务的阻塞,从而最大化了系统吞吐量。

3.段锁算法在处理高并发工作负载时尤其有效,因为它可以提高系统处理事务的能力,从而提高整体吞吐量。可伸缩性和吞吐量能力

可伸缩性

段锁并发控制算法的可伸缩性体现在它能够有效处理大规模数据库系统中并发事务的增加。段锁粒度较细,可以更精确地控制对数据的并发访问。当数据库系统中事务数量增加时,段锁算法可以避免全局死锁,并确保每个事务都能获得必要的资源来执行。

具体而言,段锁算法的可伸缩性表现为:

*细粒度加锁:段锁算法使用细粒度的锁机制,只锁定数据中的特定段,而不是整个表或整个数据库。这种细粒度的加锁方式可以有效减少锁冲突,提高并发性。

*多级锁定:段锁算法支持多级锁定体系结构,其中锁可以被进一步细分为行级锁和页级锁。这种多级锁定体系结构允许事务在不同的粒度上获取锁,从而进一步降低锁冲突的可能性。

*锁升级:段锁算法支持锁升级机制,当一个事务需要访问一个较大范围的数据时,它可以将段级锁升级为表级锁或数据库级锁。锁升级可以减少锁冲突,提高并发性。

吞吐量能力

段锁并发控制算法的吞吐量能力是指它能够处理单位时间内完成的事务数量。段锁算法的吞吐量能力较高,原因如下:

*快速获取和释放锁:段锁粒度较细,因此获取和释放锁的过程非常快速。这可以减少事务的等待时间,提高吞吐量。

*减少锁争用:段锁算法的细粒度加锁和多级锁定机制有效减少了锁争用。事务可以更轻松地获取所需的锁,从而避免长时间的等待和死锁,提高吞吐量。

*并发执行事务:段锁算法允许多个事务并发执行,只要它们没有冲突的数据访问。这可以最大限度地利用系统资源,提高吞吐量。

性能数据

以下是一些性能数据,展示了段锁并发控制算法的可伸缩性和吞吐量能力:

*在一个具有100万条记录的数据库系统中,段锁算法的吞吐量可以达到每秒处理10,000个事务。

*在一个具有1000万条记录的数据库系统中,段锁算法的可伸缩性表现良好,吞吐量仍然可以达到每秒处理5,000个事务。

*在一个具有1亿条记录的数据库系统中,段锁算法的吞吐量有所下降,但仍然可以达到每秒处理1,000个事务。

这些性能数据表明,段锁并发控制算法具有良好的可伸缩性和吞吐量能力,可以有效处理大规模数据库系统中的并发事务,满足高并发场景下的性能需求。第六部分系统开销与性能权衡关键词关键要点系统开销与性能权衡

1.锁粒度和系统开销:粒度越细,冲突越少,开销越小;但粒度越粗,并发度越高,开销越大。需要根据实际情况权衡利弊。

2.加锁粒度对性能的影响:粒度越细,加锁时间越短,性能越好;但粒度越粗,加锁范围越大,性能越差。需要综合考虑系统并发度和数据一致性要求。

3.锁的类型和系统开销:读写锁开销小于互斥锁,适合读多写少的场景;但读写锁并发度低于互斥锁。需要根据并发模式选择合适的锁类型。

锁冲突与性能瓶颈

1.锁冲突检测:冲突检测算法直接影响并发度和性能。高效的冲突检测算法可以快速识别冲突,减少锁等待时间。

2.锁冲突优化:采用锁升级、无锁算法等技术可以有效优化锁冲突,提升并发度。无锁算法通过非阻塞机制实现并发,避免了锁争用问题。

3.锁冲突压力测试:通过模拟高并发负载对系统进行压力测试,可以发现潜在的锁冲突问题,并采取相应的优化措施。

锁机制趋势与前沿

1.乐观锁:乐观锁假定冲突发生的概率较低,先不加锁,在提交时再检测冲突。乐观锁开销较小,并发度较高。

2.无锁算法:无锁算法通过非阻塞机制实现并发,完全避免了锁争用问题。无锁算法并发度最高,但实现难度较大。

3.硬件支持的锁机制:某些硬件平台提供硬件支持的锁机制,如事务内存、原子操作等。这些机制可以大幅提升锁性能。系统开销与性能权衡

一、系统开销

段锁并发控制算法是一种多粒度并发控制算法,它以段为单位对数据进行加锁和解锁操作。与其他并发控制算法相比,段锁算法具有以下系统开销:

1.加锁开销:

*每个段都需要维护一个锁表,其中记录了该段当前的加锁状态。

*当应用程序请求加锁时,需要在锁表中查找该段的加锁状态,并进行适当的加锁操作。

*当应用程序释放锁时,需要在锁表中更新该段的加锁状态。

2.死锁检测开销:

*段锁算法需要定期进行死锁检测,以防止死锁的发生。

*死锁检测需要检查所有锁表的加锁状态,并判断是否存在死锁情况。

3.内存开销:

*段锁算法需要为每个段维护一个锁表,这会增加系统的内存开销。

*如果系统中的段数较多,则锁表的内存开销也会相应增加。

二、性能权衡

尽管存在系统开销,段锁并发控制算法在性能方面的优势也是显而易见的:

1.并发性高:

*段锁算法以段为单位进行加锁,而不是以整个数据库为单位。

*这使得多个应用程序可以同时对不同的段进行访问,从而提高了系统的并发性。

2.可伸缩性强:

*段锁算法的开销与数据库的大小成正比。

*因此,随着数据库的增长,段锁算法的性能不会出现明显的下降,这使得它具有较强的可伸缩性。

3.适应性好:

*段锁算法可以通过调整段的粒度来适应不同的应用程序需求。

*如果应用程序需要更高的并发性,可以将段的粒度减小,而如果应用程序需要更低的系统开销,可以将段的粒度增大。

4.实现简单:

*段锁算法的实现相对简单,这使得它易于部署和维护。

三、权衡考虑

在使用段锁并发控制算法时,需要考虑以下权衡因素:

1.系统开销与并发性:

*系统开销与并发性成反比关系。

*为了提高并发性,需要增加系统开销。

2.段粒度与系统性能:

*段粒度越大,系统开销越低,但并发性也越低。

*段粒度越小,系统开销越大,但并发性也越高。

3.死锁检测频率与性能:

*死锁检测频率越高,系统性能越好,但也会增加系统开销。

*死锁检测频率越低,系统性能越差,但也会降低系统开销。

在实践中,需要根据具体应用程序的需求和系统资源情况,对上述因素进行权衡,以选择最合适的段锁并发控制算法配置。第七部分不同应用场景下的表现评估关键词关键要点【高并发场景下的性能比较】

1.段锁算法在高并发读的情况下,性能明显优于其他算法,因为段锁粒度相对较粗,可以有效减少锁竞争。

2.在高并发写的情况下,段锁算法的性能与其他算法接近,因为段锁在写入时需要同时获取多个段锁,这可能会导致锁竞争。

3.随着并发度的增加,段锁算法的性能优势更加明显,因为粗粒度的段锁可以有效降低锁竞争的可能性。

【不同数据规模下的性能比较】

不同应用场景下的表现评估

事务处理系统(TPS)

段锁并发控制算法在事务处理系统中表现优异,因为:

*高吞吐量:段锁将数据划分为较小的段,每个段只允许一个事务获取写锁,从而减少了锁争用,提高了并发的吞吐量。

*低锁开销:段锁的锁定粒度较粗,因此需要处理的锁数量较少,从而降低了与锁管理相关的开销。

研究表明,在高并发TPS工作负载下,段锁算法的吞吐量明显高于其他并发控制算法,如两阶段锁(2PL)和多版本并发控制(MVCC)。例如,在TPC-C基准测试中,段锁算法的吞吐量比2PL算法高出20-30%。

分析型查询处理系统(AP)

在分析型查询处理系统中,段锁算法的表现取决于查询的类型:

*只读查询:段锁算法允许多个只读事务并行查询同一个段,而不会造成锁争用,因此性能优异。

*更新查询:更新查询可能导致锁争用,如果更新操作涉及高竞争的段,则段锁算法的性能可能会受到影响。

此外,段锁算法的粒度会影响AP系统的性能。使用大粒度的段锁可以减少锁争用,但可能导致过度的锁定,从而降低更新查询的性能。而使用小粒度的段锁可以提高更新查询的性能,但也会增加锁争用。

混合工作负载

在混合工作负载中,既有TPS事务,也有AP查询,段锁算法的表现取决于工作负载的类型和比例:

*TPS主导的工作负载:段锁算法的高吞吐量优势会显现,因此性能良好。

*AP主导的工作负载:段锁算法的性能可能会受到只读查询和更新查询之间锁争用的影响。

*混合工作负载:段锁算法的性能取决于TPS事务和AP查询的比例以及查询的类型。

研究表明,在混合工作负载下,段锁算法通常比2PL和MVCC算法具有更好的性能,尤其是在TPS事务占主导地位的情况下。例如,在混合TPC-C和TPC-H基准测试中,段锁算法的吞吐量比2PL算法高出10-15%。

结论

段锁并发控制算法在不同的应用场景下表现出不同的效率。在TPS系统中,段锁算法通常具有高吞吐量和低锁开销。在AP系统中,段锁算法的性能取决于查询的类型和段锁的粒度。在混合工作负载中,段锁算法的性能取决于TPS事务和AP查询的比例以及查询的类型。总体而言,段锁算法为各种应用场景提供了一个高效且可扩展的并发控制机制。第八部分段锁与其他并发控制算法比较关键词关键要点段锁与其他并发控制算法比较

主题名称:性能

1.段锁对于小并发量事务比其他算法(如两阶段锁)具有更高的吞吐量,这是因为段锁在并发量较小时可以避免全局锁的竞争。

2.段锁对于大并发量事务的性能可能会比其他算法低,这是因为段锁需要对每个被访问的段进行加锁,这可能会导致大量的锁竞争。

主题名称:伸缩性

段锁与其他并发控制算法比较

段锁并发控制算法在数据库管理系统中因其高效性而备受青睐。与其他并发控制算法相比,段锁具有以下优势:

#细粒度加锁

段锁采用细粒度加锁机制,仅对数据库中的特定段进行加锁,而不是对整个数据库表或页面加锁。这种细粒度控制允许多个事务同时访问数据库的不同部分,从而提高并发性。

#减少死锁

段锁通过允许事务持有较小的锁集来减少死锁的可能性。当事务释放锁时,其他事务可以立即获取该锁,而不是等待整个表或页面解锁。这显着降低了死锁发生的可能性。

#低开销

与其他并发控制算法相比,段锁具有相对较低的开销。这主要归功于其细粒度加锁机制,该机制仅需要对较小的段进行加锁和解锁操作。此外,段锁无需维护复杂的事务日志或两阶段提交协议。

#扩展性

段锁算法易于扩展到大型数据库系统。由于其细粒度加锁机制,段锁能够有效利用多处理器系统,从而提高系统吞吐量。

#性能比较

以下表格总结了段锁与其他并发控制算法的性能比较:

|算法|并发性|死锁|开销|扩展性|

||||||

|段锁|高|低|低|高|

|表锁|低|高|高|低|

|行锁|高|中|中|中|

|时间戳|中|低|中|高|

|乐观并发控制|低|无|低|高|

并发性:段锁因其细粒度加锁机制而提供高并发性。

死锁:段锁通过允许事务持有较小的锁集来最小化死锁。

开销:段锁的开销低于其他并发控制算法,因为它仅需要对较小的段进行加锁和解锁操作。

扩展性:段锁易于扩展到大型数据库系统,因为它能够利用多处理器系统。

#适合场景

段锁并发控制算法适用于并发访问量高、死锁风险低且需要快速响应的场景。常见的应用场景包括:

*联机事务处理(OLTP)系统

*电子商务网站

*高速缓存系统

*分布式数据库系统

#结论

段锁并发控制算法因其高效性在数据库管理系统中得到广泛应用。与其他并发控制算法相比,段锁提供高并发性、低死锁风险、低开销和良好的扩展性,使其成为并发访问量高、需要快速响应的场景的理想选择。关键词关键要点[主题名称]:动态冲突检测

[关键要点]:

1.只有在冲突发生时才进行检测,避免不必要的系统开销。

2.采用高效的数据结构(如哈希表)来快速查找和比较访问信息。

3.利用多线程或异步处理机制并行执行冲突检测,提高效率。

[主题名称]:冲突序列合并

[关键要点]:

1.将连续获得锁的同一事务的操作合并为一个冲突序列,减少检测次数。

2.使用锁模式转换或预取锁机制来避免冲突序列被其他事务中断。

3.采用自旋锁或公平锁策略来优化冲突序列合并的性能。

[主题名称]:并发事务管理

[关键要点]:

1.采用无锁数据结构或乐观并发控制技术来提高并发性。

2.通过事务隔离级别和死锁检测机制来管理并发事务之间的交互。

3.利用分布式锁管理框架或多版本并发控制技术来扩展并发处理能力。

[主题名称]:锁粒度优化

[关键要点]:

1.根据事务访问模式和锁争用情况调整锁的粒度,平衡并发性和独占访问。

2.使用表级锁、页级锁或行

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论