中易网

高性能mysql 第三版怎么样

答案:2  悬赏:80  
解决时间 2021-01-13 07:54
  • 提问者网友:泪痣哥哥
  • 2021-01-12 09:16
高性能mysql 第三版怎么样
最佳答案
  • 二级知识专家网友:青灯有味
  • 2021-01-12 10:32
在MySQL社区,这是一本重量级的书,我不知道出版社是怎么挑选译者的,但是很明显,我个人的意见,这次挑选非常的失败。书中98页倒数第4行的"binary search"的翻译(二进制搜索)已经道出了一切,但凡学过计算机的,我估计都不能做出这样的翻译。在计算机领域,二进制是一个专门的术语,有特定的含义。我不仅怀疑译者根本没学过"binary search"算法,以至于只能按字面翻译,我甚至怀疑他们连“二进制”的含义可能也不懂,找这样的人来翻译,真是天大的笑话。 再举一个术语的翻译“secondary index”,书中的译法是“第二索引”,暂且不论惯用的“二级索引”是否是一个标准的译法,假如在主键之外,还有B,C两个索引,如果B叫“第二索引”,那么C就应该叫“第三索引”了?为什么C也叫“第二”呢,难道是并列第二?“第二”在汉语中是一个意思很明确的词,你当然可以说“第二”也能表示“二级”的意思,这种牵强的脱离通用语义的翻译真是对翻译标准“信雅达”中“达”字的讽刺。 关于“达”我们还可以找一个例子,介绍coverring index的部分,译文第96页,原文第124页。原文是“For example,the sakila.actor table uses InnoDB and has an index on last_name, so the index can cover queries that retrieve the primary key column actor_id, even though that column isn’t technically part of the index”,译文是“例如,sakila.actor表适用了InnoDB并且在last_name上有索引,因此,即使该列不是索引的一部分,索引页可以覆盖取得主键actor_id的查询”,原文读来没有任何的歧义,译文却变了样,第一遍读的时候,你能分辨出“即使该列不是索引的一部分”中的“该列”是指代的“last_name"呢?还是后面出现的"actor_id”呢?将代词放在指代的名词之前出现,这绝对是对人的智力的挑战,即便是诗歌,我也没见汉语中有多少这样的用法,遑论技术性文字。在原文中"that column"这个代词出现在了"actor_id"之后,不知道为什么在译文中,代词就钻到了指代的名词之前。 如果可以抛开“达”,还要争辩词的译法是“见仁见智”的,那么对“信”的违背则已经使这本重量级巨著的翻译失去了最基本的存在价值,随便举两个例子: 1. 4.6查询提示优化对HIGH_PRIORITY的描述,译本第152页,原书第195页,原文是“HIGH_PRIORITY tells MySQL to schedule a SELECT statement before other statements that may be waiting for locks, so they can modify data.”,译文是“HIGH_PRIORITY告诉MySQL将SELECT语句放在其他语句的前面,以便它修改数据”,原文中的“so they can modify data"变成了"以便它可以修改数据",复数形式的they变成了单数形式的"它",这个改变虽然细微,但直接影响了这个位置的代词所指代的主语,这个代词到底是"SELECT statement"呢?还是"other statements that may be waiting for locks"?原文中当然是其他能modify data的statements,而到了疑问中,变成了"SELECT statement",问一个菜鸟级的问题,select statement能modify data吗? 2. 还是4.6查询提示优化,对DELAYED的描述,译文第152页,原文第196页。原文是"It lets the statement to which it is applied return immediately and places the inserted rows into a buffer, which will be inserted in bulk when the table is free",译文是"应用了这个提示的语句会立即返回并将待插入的列放入缓冲区,在表空闲的时候再执行插入",粗看没什么问题,细看问题一大堆。 2.1 在原文中,主语是it,指代的是"DELAYED"这个hint,到了译文中,主语从"提示"本身变成了"应用了这个提示的语句",于是在原文中的"delayed"这个hint一方面使语句立即返回,另一方面使MySQL在后台处理被缓存的数据两层意思变成了语句一方面返回,另一方面“将待插入的列放入缓冲区”,到底是"DELAYED"使数据被插入buffer,还是应用了"DELAYED"的语句使数据被插入了buffer,区别虽然微妙,但区别就是区别,译文的意思与原文已差之毫厘,谬以千里。 2.2 原文中"which will be inserted in bulk..."是一个被动语态,指数据被插入,主语没有明确指出,在上下文环境中当然是数据库;而到了译文中,“在表空闲的时候再执行插入”是一个主动的语态,“谁”执行了插入?如果和上句连起来,很容易理解成“应用了这个提示的语句在表空闲的时候再执行插入”,这不是扯淡吗?当然,稍微有点数据库常识的人都不会这样理解,但原文原本语义清晰,翻译过来却主语混乱,实在令人难以接受。 2.2 在原文中的"rows",一个复数形式的词,到了译文中,变成了"列",假如说复数变单数还能接受,把"row"翻译成"列"真是天才的创举。 2.3 原文中"will be inserted in bulk when ..."明确指出了insert的方式是"in bulk",但是这个信息在译文中丢失了。 类似的问题简直处处可见,原文的文字简洁清晰,非常容易理解,但我读到的译文却非常难以理解,更可恨的是,原文中大量的信息被扭曲,抛弃。“信雅达”这三标准没有一个做到。我个人的总结是,这个译本的水平跟中国足球的水平一样,能把球停在百米开外,一个字,糙。 客观地说,这本书至少将MySQL优化的知识在中国的传播门槛大大降低,但咱不是黄莺,不会唱赞歌,既然是书评,就是要来挑刺的,看不到刺,容不得刺,电子工业永远没有赶上O'Relly的机会,中国的技术书籍永远都只能是菜鸟水平。
全部回答
  • 1楼网友:山有枢
  • 2021-01-12 11:00
我觉得还行
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息!
大家都在看
推荐信息