deterministic mysql_mysql中的确定性函数

5 个答案:

答案 0 :(得分:14)

来自MySQL 5.0参考:

对例程性质的评估基于创建者的“诚实”:MySQL不会检查声明为DETERMINISTIC的例程是否没有产生非确定性结果的语句。但是,错误地说明例程可能会影响结果或影响性能。将非确定性例程声明为DETERMINISTIC可能会导致优化程序选择错误的执行计划,从而导致意外结果。将确定性例程声明为NONDETERMINISTIC可能会导致不使用可用的优化,从而降低性能。在MySQL 5.0.44之前,DETERMINISTIC特性被接受,但优化器不使用。

所以你有它,你可以将存储的例程标记为DETERMINISTIC,即使它不是,但它可能会导致意外的结果或性能问题。

答案 1 :(得分:12)

DETERMINISTIC结果不是指在不同时间返回的不同结果集(取决于平均时间内添加的数据)。此外,它是对使用相同数据的不同机器上的结果集的引用。例如,如果您有两台运行包含uuid()或引用服务器变量的函数的计算机,那么这些计算机应被视为NOT DETERMINISTIC。这在复制中很有用,因为函数调用存储在二进制日志(主服务器)中,然后也由从服务器执行。有关详细信息和示例,请参阅http://dev.mysql.com/doc/refman/5.0/en/stored-programs-logging.html

因此,确定使用DETERMINISTIC(99%的时间)是正确的,不应被视为滥用。

答案 2 :(得分:7)

我认为你的日常工作是确定性的。文档不是很清楚,这导致很多人对这个问题非常困惑,实际上更多的是关于复制而不是其他任何问题。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值