什么是TCO

什么是TCO,第1张

TCO (Total Cost of Ownership ),即总拥有成本,包括产品采购到后期使用、维护的成本。这是一种公司经常采用的技术评价标准。

总所有成本TCO (Total cost of ownership)是一种公司经常采用的技术评价标准,它的核心思想是在一定时间范围内所拥有的包括置业成本(acquisition cost)和每年总成本在内的总体成本。在某些情况下,这一总体成本是一个为获得可比较的现行开支而对3到5年时间范围内的成本进行平均的值。

扩展资料:

优点

TCO 的突出优点是:在某个项目购进的初期人们对其将来可能要投入的成本尚未清楚的时候,提供了一种强有力的成本估算方法。然而, 由于这种估算方法只看重成本,所以对于完全仰赖TCO 而言,将使这样的公司最终采取将开支减到最少的策略,而不再考虑如何最大限度获得回报的策略。

为此,这些公司可能购买成本最低廉的应用软件,而很少选择那些能对公司的最低要求产生最大影响的应用软件。

在绝大多数情形下, 计算总所有成本是一个需要持续努力的过程,它既需要考虑技术方面的因素,又要能兼顾到非技术方面的因素。想要对相关的应用软件的持续成本有个完全的了解,最好通过至少 3 年左右的时间范围来计算TCO。

包括软件和硬件成本在内的各项成本加上真正上马该软件前准备工作中的咨询和有关支持成本都是在计算TCO时要考虑在内的。而真正上马该软件后,随后几年的维护、升级成本以及培训用户和IT支持方面的成本也是必须要考虑的。

参考资料来源:百度百科-TCO

PC与服务器的区别:

1 可扩展性不同。

PC一般不需要很多外插卡,对扩展性要求不高。

服务器一般需要考虑增加网卡、RAID卡、HBA卡等。另外,扩展性还包括,内存、硬盘等存储位、电源,甚至是CPU的扩展,这些是服务器的特性。

2 系统方面不同。

一般我们电脑是使用windows XP或者windows7等系统。

服务器一般使用windows 2000、windows 2003、windows 2008以及Linux等服务器系统,内部界面与windows xp类似,只是里面多了一些服务器应用软件。

3 稳定性和可靠性不同。

普通CPU是按照72个小时连续工作设计的,家用电脑不用时,我们还是会让它保持关机状态。

服务器CPU是为了长时间稳定工作而存在的,基本都是设计为能常年连续工作的。一般服务器都是365天开机运行,只有偶尔停机维护,对稳定性要求极高。

4 指令集不同。

普通PC配备的是普通CPU,通常为CISC复杂指令集,追求指令集的大而全,尽量把各种常用的功能集成到一块。

服务器CPU的指令,一般是采用RISC(精简指令集)。这种设计的好处,就是针对性更强,可以根据不同的需求,进行专门的优化,能效更高。

5 多路互联支持不同。

普通家用电脑,一块主板只能安装一个CPU,不支持多路互联。

服务器CPU支持多路互联,简单的说就是一台服务器可装很多个CPU。

参考资料:

百度百科-个人计算机

参考资料:

百度百科-服务器

在开始演示之前,我们先介绍下两个概念。

概念一,数据的可选择性基数,也就是常说的cardinality值。

查询优化器在生成各种执行计划之前,得先从统计信息中取得相关数据,这样才能估算每步 *** 作所涉及到的记录数,而这个相关数据就是cardinality。简单来说,就是每个值在每个字段中的唯一值分布状态。

比如表t1有100行记录,其中一列为f1。f1中唯一值的个数可以是100个,也可以是1个,当然也可以是1到100之间的任何一个数字。这里唯一值越的多少,就是这个列的可选择基数。

那看到这里我们就明白了,为什么要在基数高的字段上建立索引,而基数低的的字段建立索引反而没有全表扫描来的快。当然这个只是一方面,至于更深入的探讨就不在我这篇探讨的范围了。

概念二,关于HINT的使用。

这里我来说下HINT是什么,在什么时候用。

HINT简单来说就是在某些特定的场景下人工协助MySQL优化器的工作,使她生成最优的执行计划。一般来说,优化器的执行计划都是最优化的,不过在某些特定场景下,执行计划可能不是最优化。

比如:表t1经过大量的频繁更新 *** 作,(UPDATE,DELETE,INSERT),cardinality已经很不准确了,这时候刚好执行了一条SQL,那么有可能这条SQL的执行计划就不是最优的。为什么说有可能呢?

来看下具体演示

譬如,以下两条SQL,

A:

select from t1 where f1 = 20;

B:

select from t1 where f1 = 30;

如果f1的值刚好频繁更新的值为30,并且没有达到MySQL自动更新cardinality值的临界值或者说用户设置了手动更新又或者用户减少了sample page等等,那么对这两条语句来说,可能不准确的就是B了。

这里顺带说下,MySQL提供了自动更新和手动更新表cardinality值的方法,因篇幅有限,需要的可以查阅手册。

那回到正题上,MySQL 80 带来了几个HINT,我今天就举个index_merge的例子。

示例表结构:

mysql> desc t1;+------------+--------------+------+-----+---------+----------------+| Field      | Type         | Null | Key | Default | Extra          |+------------+--------------+------+-----+---------+----------------+| id         | int(11)      | NO   | PRI | NULL    | auto_increment || rank1      | int(11)      | YES  | MUL | NULL    |                || rank2      | int(11)      | YES  | MUL | NULL    |                || log_time   | datetime     | YES  | MUL | NULL    |                || prefix_uid | varchar(100) | YES  |     | NULL    |                || desc1      | text         | YES  |     | NULL    |                || rank3      | int(11)      | YES  | MUL | NULL    |                |+------------+--------------+------+-----+---------+----------------+7 rows in set (000 sec)

表记录数:

mysql> select count() from t1;+----------+| count() |+----------+|    32768 |+----------+1 row in set (001 sec)

这里我们两条经典的SQL:

SQL C:

select from t1 where rank1 = 1 or rank2 = 2 or rank3 = 2;

SQL D:

select from t1 where rank1 =100  and rank2 =100  and rank3 =100;

表t1实际上在rank1,rank2,rank3三列上分别有一个二级索引。

那我们来看SQL C的查询计划。

显然,没有用到任何索引,扫描的行数为32034,cost为324365。

mysql> explain  format=json select from t1  where rank1 =1 or rank2 = 2 or rank3 = 2\G 1 row EXPLAIN: {  "query_block": {    "select_id": 1,    "cost_info": {      "query_cost": "324365"    },    "table": {      "table_name": "t1",      "access_type": "ALL",      "possible_keys": [        "idx_rank1",        "idx_rank2",        "idx_rank3"      ],      "rows_examined_per_scan": 32034,      "rows_produced_per_join": 115,      "filtered": "036",      "cost_info": {        "read_cost": "323207",        "eval_cost": "1158",        "prefix_cost": "324365",        "data_read_per_join": "49K"      },      "used_columns": [        "id",        "rank1",        "rank2",        "log_time",        "prefix_uid",        "desc1",        "rank3"      ],      "attached_condition": "((`ytt``t1``rank1` = 1) or (`ytt``t1``rank2` = 2) or (`ytt``t1``rank3` = 2))"    }  }}1 row in set, 1 warning (000 sec)

我们加上hint给相同的查询,再次看看查询计划。

这个时候用到了index_merge,union了三个列。扫描的行数为1103,cost为44109,明显比之前的快了好几倍。

mysql> explain  format=json select /+ index_merge(t1) / from t1  where rank1 =1 or rank2 = 2 or rank3 = 2\G 1 row EXPLAIN: {  "query_block": {    "select_id": 1,    "cost_info": {      "query_cost": "44109"    },    "table": {      "table_name": "t1",      "access_type": "index_merge",      "possible_keys": [        "idx_rank1",        "idx_rank2",        "idx_rank3"      ],      "key": "union(idx_rank1,idx_rank2,idx_rank3)",      "key_length": "5,5,5",      "rows_examined_per_scan": 1103,      "rows_produced_per_join": 1103,      "filtered": "10000",      "cost_info": {        "read_cost": "33079",        "eval_cost": "11030",        "prefix_cost": "44109",        "data_read_per_join": "473K"      },      "used_columns": [        "id",        "rank1",        "rank2",        "log_time",        "prefix_uid",        "desc1",        "rank3"      ],      "attached_condition": "((`ytt``t1``rank1` = 1) or (`ytt``t1``rank2` = 2) or (`ytt``t1``rank3` = 2))"    }  }}1 row in set, 1 warning (000 sec)

我们再看下SQL D的计划:

不加HINT,

mysql> explain format=json select from t1 where rank1 =100 and rank2 =100 and rank3 =100\G 1 row EXPLAIN: {  "query_block": {    "select_id": 1,    "cost_info": {      "query_cost": "53434"    },    "table": {      "table_name": "t1",      "access_type": "ref",      "possible_keys": [        "idx_rank1",        "idx_rank2",        "idx_rank3"      ],      "key": "idx_rank1",      "used_key_parts": [        "rank1"      ],      "key_length": "5",      "ref": [        "const"      ],      "rows_examined_per_scan": 555,      "rows_produced_per_join": 0,      "filtered": "007",      "cost_info": {        "read_cost": "47884",        "eval_cost": "004",        "prefix_cost": "53434",        "data_read_per_join": "176"      },      "used_columns": [        "id",        "rank1",        "rank2",        "log_time",        "prefix_uid",        "desc1",        "rank3"      ],      "attached_condition": "((`ytt``t1``rank3` = 100) and (`ytt``t1``rank2` = 100))"    }  }}1 row in set, 1 warning (000 sec)

加了HINT,

mysql> explain format=json select /+ index_merge(t1)/ from t1 where rank1 =100 and rank2 =100 and rank3 =100\G 1 row EXPLAIN: {  "query_block": {    "select_id": 1,    "cost_info": {      "query_cost": "523"    },    "table": {      "table_name": "t1",      "access_type": "index_merge",      "possible_keys": [        "idx_rank1",        "idx_rank2",        "idx_rank3"      ],      "key": "intersect(idx_rank1,idx_rank2,idx_rank3)",      "key_length": "5,5,5",      "rows_examined_per_scan": 1,      "rows_produced_per_join": 1,      "filtered": "10000",      "cost_info": {        "read_cost": "513",        "eval_cost": "010",        "prefix_cost": "523",        "data_read_per_join": "440"      },      "used_columns": [        "id",        "rank1",        "rank2",        "log_time",        "prefix_uid",        "desc1",        "rank3"      ],      "attached_condition": "((`ytt``t1``rank3` = 100) and (`ytt``t1``rank2` = 100) and (`ytt``t1``rank1` = 100))"    }  }}1 row in set, 1 warning (000 sec)

对比下以上两个,加了HINT的比不加HINT的cost小了100倍。

总结下,就是说表的cardinality值影响这张的查询计划,如果这个值没有正常更新的话,就需要手工加HINT了。相信MySQL未来的版本会带来更多的HINT。

感谢各位主公对《 率土之滨 》的支持,10月12日上午10点对全服进行例行维护。

同时,将会更新以下内容:

新增功能

-新增个人技术“统帅”,研究“统帅”技术后分城部队可获得主城封禅台的COST上限加成,不能与分城封禅台的提升COST上限效果叠加,效果取两者的最高值

功能调整

-<第三赛季>从第二赛季进入第三赛季的玩家初始武将等级统一为5级,城主府3级之前部队COST上限初始为6。已开启第三赛季的服务器将不受影响

-<第二赛季><第三赛季><征服赛季>兵种转换功能和演武“极难II”难度开启调整至“群雄割据II”

-<第二赛季><第三赛季><征服赛季>批量招募功能开启调整至“汉室衰微”

-<第三赛季><征服赛季>技术系统开启调整至“群雄割据II”

-<第三赛季><征服赛季>立国条件调整为:占领任意1个郡县的所有城池;同盟等级达到20级;盟主没被沦陷

-<第三赛季><征服赛季>天下大势“诸国并起”时间调整为4天,“诸国并起”进行中的服务器不受影响

-“一夫当关”调整为仅前锋可以生效,其余效果不变

-5星汉卢植“将倾之柱”效果调整为对敌军群体发动一次策略攻击,并使自身受到的攻击与策略攻击伤害降低

功能优化

-优化技术升至顶级时的显示效果

-优化部分战法的描述,其效果不受影响

一服务器安装
1首先下载服务器端wowWDDG_Identity
2安装,一直按照说明,下一步就可以,注意硬盘空间不要小于35G
3装完以后他会提醒你选择wow目录,选择你安装的客户端目录即可。或者运行/maps/BatCreatorexe也可以
4然后运行,开始解压地图,注意第一个选择Y,第二个选择N
5在安装服务器端的目录下建立accounts目录,运行Account Creatorexe建立帐号
6运行IP-Configurationexe定义自己的ip和一些服务器属性,包括回血,回魔速度,服务器类型,自动保存等界面上的英文很好懂,真的不懂就查查金山词霸好了,呵呵!
7最后运行服务器即可。
二服务器常用设置
很多服务器新人出生钱的问题(那个出来可以卖10银币变10金币的改法):
修改scripts/itemsscp
找到[item 40000]
class=12
level=1
material=-1
model=3331
name=10 Silver Certificate 修改为10 GOLD Certificate
quality=1
buyprice=1000 修改为100000
sellprice=1000 修改为100000
stackable=100
1经验值获得倍率修改
修改文件:/scripts/emuconf, /scripts/startuptcl
修改步骤:
(1) emuconf中修改save_text_ppoints=yes
(2) startuptcl中set xp [expr { 20+((($victim_level/4)+5)$victim_level)倍率 }],倍率是一个你想获得经验值得倍率,应该是数字
2怪物掉宝率修改
修改文件:/scripts/creaturesscp
(1) creaturesscp 文件里的loot=xxx xxx
前面一个数是物品代码,后面一个就是爆率
比如loot=3300 22620001 就是代码为3300的物品 爆率是22620001
其中3300是代表/scripts/itemsscp中的物品代码
3地图上增加新NPC的方法
(1) 需要用GM帐号进入游戏到需要增加新NPC的地点
(2) addspawn 99999 在GM站立的地方安放一个NPC的刷新点。
(3) setspawndist 2 4 该刷新点刷新的怪物自主移动范围为2-4 yards
(4) setspawntime 60 300 该刷新点刷新怪物的时间间隔为 60-300秒。
(5) 出现小人(既刷新点)等几秒钟 出现新NPC
(6) 清除刷新点,游戏里选定你要删除的小人,输入del即可
4如何备份帐号信息
(1) 备份accounts文件夹下的所有帐户文件
(2) 备份saves文件夹下的playerssave
5骑乘指南
(1) 用GM帐号进入游戏
(2) add xxx 其中xxx为坐骑代码(附C)
(3) learn xxx 其中xxx为技能代码(附C)
6如何学习穿皮甲,链甲,板甲
(1) 用GM帐号进入游戏
(2) 选中需要学习穿装技能的人物
(3) 然后输入 learnsk xxx 其中xxx代表需要学习的技能代码
也可以修改用户的存档这个在下面的文件分析中会提到的
(4) 布甲技能代码 415 皮甲技能代码 414 链甲技能代码 413 板甲技能代码 293
7如何瞬移去指定地点
(1) 用GM帐号进入游戏
(2) gotrigger XXX 这里XXX是个数字,代表地区代码(附D)
8如何增加各种物品到背包中
(1) 用GM帐号进入游戏
(2) add xxx 这里xxx是一些数字, 代表各种物品代码(附B)
7如何迅速升级
(1) 用GM帐号进入游戏
(2) 要先点选需要升级的人物
(3) setxp xxx 这里xxx是一些数字, 代表需要增加的经验值
(4) 或者 setlevel xx 这里xxx是一些数字, 代表你想要的级数
8如何刷钱
(1) 用GM帐号进入游戏
(2) add 944 1000 是N个杖~卖到商店2000+金
9如何修改各物品价格
修改文件:/scripts/itemsscp
(1) 在itemsscp文件中修改物品的sellprice=即可
提示:你可以用UltraEdit软件打开,因为可以用正则表达式进行查找
10如何修改个技能学习的价格
修改文件:/scripts/spellcostscp
(1)在spellcostscp文件中修改price即可
提示:你可以用UltraEdit软件打开,因为可以用正则表达式进行替换
11如何修改人物的属性
修改文件:/saves/playerssave
(1) 查找需要修改的人物名称 NAME=人物名称
(2) 修改你需要修改的数据即可(那些英文很简单的)
注意: 修改时需要先关闭服务器端,修改好以后再启动服务器即可
三服务器端文件分析
/accounts/ 放置所有帐号


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10567553.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-09
下一篇 2023-05-09

发表评论

登录后才能评论

评论列表(0条)

保存