{{sellerTotalView > 1 ? __("sellers", {number: sellerTotalView}) : __("seller", {number: sellerTotalView}) }}, {{numTotalView > 1 ? __("items", {number: numTotalView}) : __("item", {number: numTotalView}) }}
free FREE

Change Your Zip Code

Inventory information and delivery speeds may vary for different locations.

Location History

{{email ? __('Got it!') : __('Restock Alert')}}

We will notify you by email when the item back in stock.

Cancel
Yami

Jingdong book

Oracle性能诊断艺术(第2版)

{{buttonTypePin == 3 ? __("Scan to view more PinGo") : __("Scan to start")}}

Oracle性能诊断艺术(第2版)

{{__(":people-members", {'people': item.limit_people_count})}} {{ itemCurrency }}{{ item.valid_price }} {{ itemCurrency }}{{ item.invalid_price }} {{ itemDiscount }}
Ends in
{{ itemCurrency }}{{ item.valid_price }}
{{ itemCurrency }}{{ priceFormat(item.valid_price / item.bundle_specification) }}/{{ item.unit }}
{{ itemDiscount }}
{{ itemCurrency }}{{ item.valid_price }} {{ itemCurrency }}{{ priceFormat(item.valid_price / item.bundle_specification) }}/{{ item.unit }} {{ itemCurrency }}{{ item.invalid_price }} {{itemDiscount}}
{{ itemCurrency }}{{ item.valid_price }}
Sale ends in
Sale will starts after Sale ends in
{{ getSeckillDesc(item.seckill_data) }}
{{ __( "Pay with Gift Card to get sale price: :itemCurrency:price", { 'itemCurrency' : itemCurrency, 'price' : (item.giftcard_price ? priceFormat(item.giftcard_price) : '0.00') } ) }} ({{ itemCurrency }}{{ priceFormat(item.giftcard_price / item.bundle_specification) }}/{{ item.unit }}) Details
Best before

Currently unavailable.

We don't know when or if this item will be back in stock.

Unavailable in your area.
Sold Out

Details

Full product details
Editer Recommend

前端业务应用炙手可热之日,便是优化后端数据库性能之时。当此之际,身怀数据库优化绝技,可以让你平步职场,傲视群英。
本书是Oracle数据库优化专家Christian Antognini的一部继往开来的里程碑式著作。书中的佳实践和诸多建议全部来源于作者在实战一线的丰富积累,不仅简单实用,而且发人深省,堪称一座“宝库”,适合各层次读者研读和发掘。
与其他同类图书不同,本书不仅涵盖了当前可用的各种Oracle版本,还指明了各个版本独有的性能优化特性。全书以崭新的视角开篇立论,围绕查明问题真相和搜寻有效方略,透彻讲解了查询优化器的配置,表访问、连接和物理表布局的优化,以及加速SQL执行计划等重要主题,被读者誉为“透彻,但又通俗的性能优化好书”。
与本书第一版相比,作者增加了关于Oracle Database 11g和Oracle Database 12c的内容,补充了层次剖析工具、ASH、AWR和Statspack等知识点,并根据可读性重新组织了部分素材。

Content Description

本书是兼具技术性与指导性的参考手册。书中首先介绍了全书所需的基础知识;接着描述如何借助相关工具识别和分析性能问题,如何利用动态性能视图;接着重点关注负责将SQL语句生成执行计划的组件——查询优化器;后则展示了Oracle数据库为高效执行SQL语句提供的特性。
Author Description

Christian Antognini,资深数据库专家,从1995年就开始致力于探究Oracle数据库引擎的工作机制。长期关注逻辑与物理数据库的设计、数据库与Java应用程序的集成、查询优化器以及与性能管理和优化相关的各个方面。目前任瑞士苏黎世Trivadis公司首席顾问和性能教练,是OakTable网站核心成员。

王作佳,吉林长春人,毕业于太原工业学院。历任Java开发工程师、Oracle数据库管理员,现就职于北京一家服务公司,任职Oracle DBA,负责某省联通数据库高可用架构部署维护、数据库性能调优等。目前对Oracle数据库高可用及性能调优较为感兴趣,另外有意进军内存数据库领域。

刘迪,辽宁锦州人,毕业于辽宁工业大学。Oracle数据库工程师、10g OCM,现服务于北京某银行,任职Oracle数据库工程师,负责客户现场维护工作。主要关注Oracle数据库及其相关技术。
Comments

“互联网上充斥着大量的Oracle性能相关信息,不但高度碎片化,而且有很多是错误的。本书则异常清晰地给出了Oracle性能相关的理论和实践,明确指导读者找到需要达成的目的以及如何达成目的。”
——Jonathan Lewis,世界级Oracle技术专家,英国Oracle用户组织总监,《Oracle核心技术》作者

“这是一本技术与理念并重的参考书,不仅包含了大量完备的可重用的实例,而且包含了一些富有说服力的新观点。我可以用他的观点去说服更多的人做正确的事。”
——Cary Millsap,Method R公司首席执行官,Oracle公司系统性能集团前副总裁,数据库性能技术大师
Catalogue

第一部分 基础
第1章 性能问题2
1.1 需要为性能做规划吗2
1.1.1 需求分析2
1.1.2 分析与设计4
1.1.3 编码和单元测试4
1.1.4 集成和验收测试6
1.2 为性能而设计6
1.2.1 缺乏数据库逻辑设计6
1.2.2 实现通用表7
1.2.3 未使用约束加强数据完整性7
1.2.4 缺乏数据库物理设计7
1.2.5 未正确选择数据类型8
1.2.6 未正确使用绑定变量8
1.2.7 未利用数据库高级特性8
1.2.8 未使用PL/SQL进行以数据为中心的处理9
1.2.9 执行不必要的提交9
1.2.10 持续打开和关闭数据库连接9
1.3 你真的面临性能问题吗9
1.3.1 系统监控10
1.3.2 响应时间监控10
1.3.3 强迫性调优障碍10
1.4 如何处理性能问题11
1.4.1 业务视角和系统视角11
1.4.2 问题的编录12
1.4.3 解决问题12
1.5 小结15
第2章 关键概念16
2.1 选择率和基数16
2.2 什么是游标17
2.3 游标的生命周期18
2.4 解析的工作原理20
2.4.1 可共享游标22
2.4.2 绑定变量25
2.5 读写数据块35
2.6 检测36
2.6.1 应用程序代码37
2.6.2 数据库调用39
2.7 小结42
第二部分 识别
第3章 分析可重现的问题45
3.1 跟踪数据库调用45
3.1.1 SQL跟踪45
3.1.2 跟踪文件的结构57
3.1.3 使用TRCSESS59
3.1.4 探查器60
3.1.5 使用TKPROF60
3.1.6 使用TVD$XTAT70
3.2 探查PL/SQL代码79
3.2.1 使用DMBS_HPROF79
3.2.2 使用DBMS_PROFILER85
3.2.3 触发探查器89
3.3 小结90
第4章 实时分析不可重现的问题91
4.1 分析路线图91
4.2 动态性能视图93
4.2.1 操作系统统计信息93
4.2.2 时间模型统计信息94
4.2.3 等待级别和等待事件96
4.2.4 系统和会话统计信息100
4.2.5 度量值101
4.2.6 当前会话状态102
4.2.7 活动会话历史103
4.2.8 SQL语句统计信息111
4.2.9 实时监控112
4.3 使用Diagnostics Pack和Tuning Pack进行分析115
4.3.1 数据库服务器负载115
4.3.2 系统级别分析116
4.3.3 会话级别分析120
4.3.4 SQL语句信息122
4.4 不使用Diagnostics Pack进行分析125
4.4.1 数据库服务器负载125
4.4.2 系统级别分析126
4.4.3 会话级别分析129
4.4.4 SQL语句信息130
4.5 小结131
第5章 不可重现问题的事后分析132
5.1 知识库132
5.2 自动工作负载存储库133
5.2.1 执行配置133
5.2.2 捕获快照134
5.2.3 管理基线135
5.3 Statspack136
5.3.1 执行安装137
5.3.2 配置存储库137
5.3.3 捕获和清除快照138
5.3.4 管理基线139
5.4 使用Diagnostics Pack进行分析140
5.5 不使用Diagnostics Pack进行分析140
5.6 小结145
第三部分 查询优化器
第6章 查询优化器简介148
6.1 基础知识148
6.2 体系结构150
6.3 查询转换152
6.3.1 计数转换152
6.3.2 公共子表达式消除153
6.3.3 “或”扩张153
6.3.4 视图合并154
6.3.5 选择列表裁剪155
6.3.6 谓词下推156
6.3.7 谓词迁移158
6.3.8 非重复放置158
6.3.9 非重复消除159
6.3.10 Group-by放置159
6.3.11 Order-By消除160
6.3.12 子查询展开160
6.3.13 子查询合并161
6.3.14 使用窗口函数移除子查询162
6.3.15 联接消除162
6.3.16 联接因式分解163
6.3.17 外联接转内联接163
6.3.18 完全外联接164
6.3.19 表扩张164
6.3.20 集合操作联接转变165
6.3.21 星型转换166
6.3.22 物化视图查询重写166
6.4 小结166
第7章 系统统计信息167
7.1 dbms_stats包167
7.2 有哪些系统统计信息可用168
7.3 收集系统统计信息170
7.3.1 无工作负载统计信息170
7.3.2 工作负载统计信息171
7.3.3 在无工作负载统计信息和工作负载统计信息之间进行选择174
7.4 还原系统统计信息174
7.5 使用备份表175
7.6 管理操作的日志记录176
7.7 对查询优化器的影响177
7.8 小结182
第8章 对象统计信息183
8.1 dbms_stats包183
8.2 有哪些对象统计信息可用185
8.2.1 表统计信息186
8.2.2 列统计信息187
8.2.3 直方图189
8.2.4 扩展统计信息200
8.2.5 索引统计信息205
8.2.6 分区对象统计信息206
8.3 收集对象统计信息207
8.3.1 目标对象208
8.3.2 收集选项212
8.3.3 备份表217
8.4 配置dbms_stats包218
8.4.1 传统方式218
8.4.2 现代方式219
8.5 处理全局临时表221
8.6 处理挂起的对象统计信息222
8.7 处理分区对象223
8.7.1 挑战223
8.7.2 增量统计信息226
8.7.3 复制统计信息228
8.8 调度对象统计信息的收集229
8.8.1 10g方式229
8.8.2 11g和12c方式231
8.9 还原对象统计信息232
8.10 锁定对象统计信息234
8.11 比较对象统计信息236
8.12 删除对象统计信息238
8.13 导出、导入、获取和设置对象统计信息239
8.14 管理操作的日志记录239
8.15 保持对象统计信息为最新的策略241
8.16 小结242
第9章 配置查询优化器243
9.1 配置还是不配置243
9.2 配置路线图244
9.3 设置正确的参数245
9.3.1 查询优化器参数246
9.3.2 PGA管理260
9.4 小结266
第10章 执行计划267
10.1 获取执行计划267
10.1.1 EXPLAIN PLAN语句267
10.1.2 动态性能视图270
10.1.3 自动工作负载存储库和Statspack272
10.1.4 跟踪工具274
10.2 dbms_xplan包277
10.2.1 输出277
10.2.2 display函数281
10.2.3 display_cursor函数286
10.2.4 display_awr函数288
10.3 解释执行计划289
10.3.1 父?子关系290
10.3.2 操作的类型292
10.3.3 独立操作292
10.3.4 迭代操作295
10.3.5 无关联组合操作295
10.3.6 关联组合操作297
10.3.7 分而治之305
10.3.8 特殊情况307
10.3.9 自适应执行计划310
10.4 识别低效的执行计划314
10.4.1 错误的估算314
10.4.2 未识别限制条件316
10.5 小结317
第四部分 优化
第11章 SQL优化技巧320
11.1 修改访问结构321
11.1.1 工作原理321
11.1.2 何时使用322
11.1.3 陷阱和谬误322
11.2 修改SQL语句322
11.2.1 工作原理322
11.2.2 何时使用323
11.2.3 陷阱和谬误324
11.3 hint324
11.3.1 工作原理324
11.3.2 何时使用330
11.3.3 陷阱和谬误330
11.4 修改执行环境332
11.4.1 工作原理332
11.4.2 何时使用334
11.4.3 陷阱和谬误334
11.5 存储概要334
11.5.1 工作原理335
11.5.2 何时使用343
11.5.3 陷阱和谬误343
11.6 SQL配置文件344
11.6.1 工作原理345
11.6.2 何时使用357
11.6.3 陷阱和谬误357
11.7 SQL计划管理358
11.7.1 工作原理359
11.7.2 何时使用372
11.7.3 陷阱和谬误372
11.8 小结373
第12章 解析374
12.1 识别解析问题374
12.1.1 快速解析375
12.1.2 长解析380
12.2 解决解析问题381
12.2.1 快速解析381
12.2.2 长解析387
12.3 避开解析问题387
12.3.1 游标共享388
12.3.2 服务器端语句缓存390
12.4 使用应用编程接口392
12.4.1 PL/SQL392
12.4.2 OCI395
12.4.3 JDBC396
12.4.4 ODP.NET398
12.4.5 PHP399
12.5 小结400
第13章 优化数据访问401
13.1 识别次优访问路径401
13.1.1 识别401
13.1.2 误区403
13.1.3 原因405
13.1.4 解决方案406
13.2 弱选择性的SQL语句409
13.2.1 全表扫描409
13.2.2 全分区扫描411
13.2.3 范围分区411
13.2.4 散列和列表分区422
Introduction

译者序
一次偶然的机会,在浏览图灵网站新书的时候,无意间发现TOP这本书的第二版在招募译者。之前国内曾引进此书,作为Oracle性能调优领域的里程碑式著作,这本书给了国内DBA许多的启发。因此发现此书的第二版之后,当即决定了翻译意向,随后在与编辑联系并试译通过以后,即开始了翻译工作。此书原版共700余页,我在开始翻译之后马上就感觉到了压力,所以就联系了同为DBA的朋友、本人进入Oracle领域的引路人刘迪,请他帮忙分担一部分翻译工作。
此书从Oracle调优基础讲起,介绍了如何定位性能问题,同时对查询优化器的工作原理进行了详细描述,最后总结了一些常见的调优技术。作者对Oracle调优技术的细节把控方面令译者深感敬佩,其严谨的态度也是译者以及广大DBA从业者学习的榜样。在此,译者感谢原著作者的辛苦付出。
此书第1、2、6、7、8、9、10、14、15、16章以及文前部分由王作佳翻译,第3、4、5、11、12、13章由刘迪翻译。
此书在翻译过程中有很多名词术语,译者尽量全部翻译,遇到表达不准的术语时,均尽力采用网络上常见的翻译,另外多数不常见的术语译者都标注了原文以供读者参考。此书为译者第一部译作,因译者水平有限以及书中涉及技术较深,再加之译者时间有限,难免有误译漏译现象,还请读者见谅。如有发现错误,请通过译者邮箱或图灵网站联系以便修正。
在此感谢图灵公司的编辑朱巍老师,她给了我许多指导和帮助。同时感谢图灵其他编辑老师为本书付出的辛苦努力。在翻译初期,我的同事史盈盈女士给出了许多宝贵的建议,在此表示感谢。另外,感谢数据库组的同事们在翻译期间给予的理解和帮助。
王作佳
感谢我的团队在翻译期间给予的理解与支持。感谢王作佳提供的这次翻译机会,让我受益良多。感谢妻子孙婷的照顾与理解,能让我有时间专心翻译。感谢图灵的各位编辑对本书付出的努力。
刘迪

Specifications

Brand Jingdong book
Brand Origin China

Disclaimer

Product packaging, specifications and price are subject to change without notice. All information about the products on our website is provided for information purposes only. Please always read labels, warnings and directions provided with the product before use.

View Full Terms of Use
Add to favorites
{{ $isZh ? coupon.coupon_name_sub : coupon.coupon_ename_sub | formatCurrency }}
{{__("Buy Directly")}} {{ itemCurrency }}{{ item.directly_price }}
Quantity
{{ quantity }}
{{ instockMsg }}
{{ limitText }}
{{buttonTypePin == 3 ? __("Scan to view more PinGo") : __("Scan to start")}}
Sold by JD@CHINA
Ship to
{{ __("Ship to United States only") }}
Free shipping over 69
Genuine guarantee

Added to Cart

Keep Shopping

More to Consider

{{ item.brand_name }}

{{ item.item_name }}

{{ item.currency }}{{ item.market_price }}

{{ item.currency }}{{ item.unit_price }}

{{ item.currency }}{{ item.unit_price }}

Coupons

{{ coupon.coupon_name_new | formatCurrency }}
Clip Clipped Over
{{ getCouponDescStr(coupon) }}
{{ coupon.use_time_desc }}
Expires soon {{ formatTime(coupon.use_end_time) }}

Share this item with friends

Cancel

Yami Gift Card

Get this exclusive deal when paying with gift card

Terms and Conditions

Gift card deals are special offers for selected products;

The gift card deals will automatically be activated if a customer uses gift card balance at check out and the balance is sufficient to pay for the total price of the shopping cart products with gift card deals;

You will not be able to activate the gift card deals if you choose other payment methods besides gift card. The products will be purchased at their normal prices;

If your account balance is not enough to pay for the products with gift card deals, you can choose to reload your gift card balance by clicking on the Reload button at either shopping cart page or check out page;

Products that have gift card deals can be recognized by a special symbol showing 'GC Deal';

For any additional questions or concerns, please contact our customer service;

Yamibuy reserves the right of final interpretation.

Sold by Yami

Service Guarantee

Yami Free Shipping over $49
Yami Easy Returns
Yami Ships from United States

Shipping

  • United States

    Standard Shipping is $5.99 (Excluding Alaska & Hawaii). Free on orders of $49 or more.

    Local Express is $5.99 (Available in Parts of CA, NJ, MA & PA). Free on orders of $49 or more.

    2-Day Express (Includes Alaska & Hawaii) starts at $19.99.

Return Policy

Yami is committed to provide our customers with a peace of mind when purchasing from us. Most items shipped from Yamibuy.com can be returned within 30 days of receipt of shipment (For Food, Beverages, Snacks, Dry Goods, Health supplements, Fresh Grocery and Perishables Goods, within 7 days of receipt of shipment due to damages or quality issues; To ensure that every customer receives safe and high-quality products, we do not provide refunds or returns for beauty products once they have been opened or used, except in the case of quality issues; Some products may have different policies or requirements associated with them, please see below for products under special categories, or contact Yami Customer Service for further assistance).
Thank you for your understanding and support.

Learn More

Sold by Yami

Terms and Conditions of Yami E-Gift Card

If you choose “Redeem automatically” as your delivery method, your gift card balance will be reload automatically after your order has been processed successfully;

If you choose “Send to Email”as your delivery method, the card number and CVV will be sent to the email address automatically;

Any user can use the card number and CVV to redeem the gift card, please keep your gift card information safely. If you have any trouble receiving email, please contact Yami customer service;

Yami gift card can be used to purchase both Yami owned or Marketplace products;

Yami gift card will never expire;

Yami gift card balance does not have to be used up at once;

All rights reserved by Yami.

Return Policy

Gift card that has already been consumed is non-refundable.

Sold by JD@CHINA

Service Guarantee

Yami Free Shipping over $49
Yami Easy Returns
Yami Ships from United States

Shipping

  • United States

    Standard Shipping is $5.99 (Excluding Alaska & Hawaii). Free on orders of $49 or more.

    Local Express is $5.99 (Available in Parts of CA, NJ, MA & PA). Free on orders of $49 or more.

    2-Day Express (Includes Alaska & Hawaii) starts at $19.99.

Return Policy

You may return product within 30 days upon receiving the product. Items returned must be new in it's original packing, including the original invoice for the purchase. Customer return product at their own expense.

Sold by JD@CHINA

Service Guarantee

Yami Cross-store Free Shipping over $69
Yami 30-days Return

Yami-China FC

Yami has a consolidation warehouse in China which collects multiple sellers’ packages and combines to one order. Our Yami consolidation warehouse will directly ship the packages to your door. Cross-store free shipping over $69.

Return Policy

You may return products within 30 days upon receiving the products. Sellers take responsibilities for any wrong shipment or missing items. Packing needs to be unopened for any other than quality issues return. We promise to pack carefully, but because goods are taking long journey to destinations, simple damages to packaging may occur. Any damages not causing internal goods quality problems are not allowed to return. If you open the package and any quality problem is found, please contact customer service within three days after receipt of goods.

Shipping Information

Yami Consolidation Service Shipping Fee $9.99(Free shipping over $69)

Sellers in China will ship their orders within 1-2 business days once the order is placed. Packages are sent to our consolidation warehouse in China and combined there. Our Yami consolidation warehouse will directly ship the packages to you via UPS. The average time for UPS to ship from China to the United States is about 10 working days and it can be traced using the tracking number. Due to the pandemic, the delivery time may be delayed by about 5 days. The package needs to be signed by the guest. If the receipt is not signed, the customer shall bear the risk of loss of the package.

Sold by JD@CHINA

Service Guarantee

Free shipping over 69
Genuine guarantee

Shipping

Yami Consolidated Shipping $9.99(Free shipping over $69)


Seller will ship the orders within 1-2 business days. The logistics time limit is expected to be 7-15 working days. In case of customs clearance, the delivery time will be extended by 3-7 days. The final receipt date is subject to the information of the postal company.

Yami Points information

All items are excluding from any promotion or points events on Yamibuy.com

Return Policy

You may return product within 30 days upon receiving the product. Items returned must be new in it's original packing, including the original invoice for the purchase. Customer return product at their own expense.

Yami

Download the Yami App

Back Top

Recommended for You

About the brand

Jingdong book

为您推荐

Yami
欣葉
2种选择
欣叶 御大福 芋头麻薯 180g

周销量 600+

$1.66 $1.99 83折
Yami
欣葉
2种选择
欣叶 御大福 芋头麻薯 180g

周销量 600+

$1.66 $1.99 83折
Yami
欣葉
2种选择
欣叶 御大福 芋头麻薯 180g

周销量 600+

$1.66 $1.99 83折
Yami
欣葉
2种选择
欣叶 御大福 芋头麻薯 180g

周销量 600+

$1.66 $1.99 83折
Yami
欣葉
2种选择
欣叶 御大福 芋头麻薯 180g

周销量 600+

$1.66 $1.99 83折
Yami
欣葉
2种选择
欣叶 御大福 芋头麻薯 180g

周销量 600+

$1.66 $1.99 83折

Reviews{{'('+ commentList.posts_count + ')'}}

Have your say. Be the first to help other guests.

Write a review
{{ totalRating }} Write a review
  • {{i}} star

    {{i}} stars

    {{ parseInt(commentRatingList[i]) }}%

Yami Yami
{{ comment.user_name }}

{{ showTranslate(comment) }}Show Less

{{ strLimit(comment,800) }}Show more

Show Original

{{ comment.content }}

Yami
Show All

{{ formatTime(comment.in_dtm) }} VERIFIED PURCHASE {{groupData}}

{{ comment.likes_count }} {{ comment.likes_count }} {{ comment.reply_count }} {{comment.in_user==uid ? __('Delete') : __('Report')}}
Yami Yami
{{ comment.user_name }}

{{ showTranslate(comment) }}Show Less

{{ strLimit(comment,800) }}Show more

Show Original

{{ comment.content }}

Yami
Show All

{{ formatTime(comment.in_dtm) }} VERIFIED PURCHASE {{groupData}}

{{ comment.likes_count }} {{ comment.likes_count }} {{ comment.reply_count }} {{comment.in_user==uid ? __('Delete') : __('Report')}}

No related comment~

Review

Yami Yami

{{ showTranslate(commentDetails) }}Show Less

{{ strLimit(commentDetails,800) }}Show more

Show Original

{{ commentDetails.content }}

Yami
Show All

{{ formatTime(commentDetails.in_dtm) }} VERIFIED PURCHASE {{groupData}}

{{ commentDetails.likes_count }} {{ commentDetails.likes_count }} {{ commentDetails.reply_count }} {{commentDetails.in_user==uid ? __('Delete') : __('Report')}}

Please write at least one word

Comments{{'(' + replyList.length + ')'}}

Yami Yami

{{ showTranslate(reply) }}Show Less

{{ strLimit(reply,800) }}Show more

Show Original

{{ reply.reply_content }}

{{ formatTime(reply.reply_in_dtm) }}

{{ reply.reply_likes_count }} {{ reply.reply_likes_count }} {{ reply.reply_reply_count }} {{reply.reply_in_user==uid ? __('Delete') : __('Report')}}

Please write at least one word

Cancel

That’s all the comments so far!

Write a review
How would you rate this item?

Please add your comment.

  • A nice nickname will make your comments more popular!
  • The nickname in your account will be changed to the same as here.
Thanks for your review
Our community rely on great reviews like yours to find the best of Asia.

Report

If you find this content inappropriate and think it should be removed from the Yami.com site, let us know please.

Cancel

Are you sure to delete your review?

Cancel

You’ve Recently Viewed

About the brand

Jingdong book