前言 原子性指一个或多个操作在CPU执行的过程不被中断的特性.前面提到原子性问题产生的源头是线程切换,而线程切换依赖于CPU中断.于是得出,禁用CPU中断就可以禁止线程切换从而解决原子性问题.但是这种情况只适用于单核,多核时不适用. 以在 32 位 CPU 上执行 long 型变量的写操作为例来说明. long 型变量是 64 位,在 32 位 CPU 上执行写操作会被拆分成两次写操作(写高 32 位和写低 32 位,如下图所示,图来自[参考1]). 在单核 CPU 场景下,同一时刻只有一个线程
创建一个测试表 IF OBJECT_ID( 'dbo.T1' , 'U' )IS NOT NULL BEGIN DROP TABLE dbo.T1; END; GO )); GO INSERT INTO dbo.T1( column_1 , column_2 ) , , , '); INSERT INTO dbo.T1( column_1) ) , (); INSERT INTO dbo.T1( column_2) '); GO SELECT * FROM dbo.T1; GO 使用各种coun
mysql count(0) count(*) count(主键) count(非空字段) 效率比较 写代码的时候经理在背后说了一句count(0)的效率高于count(*) ,索性全部测试了一下 结论:1.count(0)效率等于count(*)等于count(主键)等于count(非空字段) 但是 唯一的区别就是count只会统计非空字段 系统配置 processor : 0 vendor_id : GenuineIntel cpu family : 6 model : 85 model n
select column_2,count(column_2) as 'count(column_2)' ,count(column_1) as 'count(column_1)' ,count(*) as 'count(*)' from dbo.T1 group by column_2 还是上次的数据源 http://www.cnblogs.com/SignalTips/p/4281751.html 这次是有group by的聚合 其实count(*)是最符合大众预期的. 最令人困惑是coun
在面试的时候我们会经常遇到这个问题: MySQL 中,COUNT(*).COUNT(1).COUNT(col) 有区别吗? 有区别. 接下来我们分析一下这三者有什么样的区别. 一.SQL Syntax & Semantics 从语义角度看,它们有不同的含义. COUNT(expr)返回查询到的行中 expr is not-NULL 的个数,返回类型为 BIGINT(8 bytes). Returns a count of the number of non-NULL values of expr