随笔分类 - MySQL
摘要:整数通常是标识列最好的选择,因为它们很快并且可以使用auto_increment;千万不要使用enum和set类型作为标识列;尽量避免使用字符串类型作为标识列,因为他们很消耗空间,并且通常比数字类型慢。尤其是在MyISAM表里使用字符串作为标识列时要特别小心,因为MyISAM默认对字符串使用压缩索引
阅读全文
posted @ 2018-08-01 14:48
屠魔的少年
摘要:1,应该尽量使用可以正确存储的最小数据类型 更小的数据类型通常更快,因为他们占用更小的磁盘、内存和CPU缓存,并且处理时需要的CPU周期也更小。 2,简单就好。 简单数据类型的操作通常需要更少的CPU周期。例如,整型比字符操作代价更低,因为字符集和校对规则(排序规则)使字符比整型更复杂。 3,尽量避
阅读全文
posted @ 2018-08-01 14:48
屠魔的少年
摘要:人们经常使用varchar(15)来存储ip地址,然而,它们实际上是32位无符号整数,不是字符串。 MySQL提供INET_ATON()和INET_NTOA()函数将ip地址在整数和四段表示形式之间进行转换。 把ip地址转换int:mysql> SELECT INET_ATON('192.168.0
阅读全文
posted @ 2018-08-01 14:47
屠魔的少年
摘要:物化视图实际上是预先计算并且存储在磁盘上的表,可以通过各种各样的策略刷新和更新。MySQL并不原生支持物化视图。使用开源工具Flexviews可以自己实现物化视图。它由下面这些部分组成: 1)变更数据抓取功能,可以读取服务器的二进制日志并且解析相关行的变更。 2)一系列可以帮助创建和管理视图的定义的
阅读全文
posted @ 2018-08-01 14:47
屠魔的少年
摘要:timestamp类型保存了从1970年1月1日午夜以来的秒数,timestamp只使用4个字节的存储空间,因此它的范围比datatime小得多:只能表示从1970年到2038年。提供了from_unixtime函数把unix时间戳转换为日期、unix_timestamp函数把日期转换为时间戳。 有
阅读全文
posted @ 2018-08-01 14:46
屠魔的少年
摘要:如果应用在表中保存计数器,在更新计数器时可能会碰到并发问题。有一个技巧:将计数器保存在多行中,更新计数+1的操作改为随机选择一行进行更新,求计数值的时候,做一个sum求和。
阅读全文
posted @ 2018-08-01 14:45
屠魔的少年
摘要:缓存表和汇总表,实时计算统计值是非常昂贵的操作,因为要么需要扫描表中的大部分数据,要么查询语句只能在某些特定的索引上才能有效运行,而这类特定索引一般会对update操作有影响,所以一般不希望创建这样的索引。 使用缓存表和汇总表时,必须决定是实时维护数据还是定期重建,哪个更好依赖于应用程序,但是定期重
阅读全文
posted @ 2018-08-01 14:45
屠魔的少年
摘要:关于钱的存储数据类型: 单位必须使用分为单位。 使用int类型 不建议使用decimal类型,因为会存在四舍五入。
阅读全文
posted @ 2018-08-01 14:45
屠魔的少年
摘要:blob和text都是为了存储很大的数据而设计的字符串数据类型,分别采用二进制和字符串方式存储。MySQL对blob和text列进行排序于其他类型是不同的:它只对每个列的最前max_sort_length字节而不是整个字符串排序。 尽量避免使用text和blob类型,如果实在无法避免,有一个技巧实在
阅读全文
posted @ 2018-08-01 14:44
屠魔的少年
摘要:delimiter $$ create procedure procedureyy() BEGIN declare i int default 1; while i <100000 DO begin INSERT INTO testdb.t_test VALUES(i,'锤子手机'); set i=
阅读全文
posted @ 2018-08-01 14:40
屠魔的少年
摘要:同时锁定2个表,不允许写入,然后对调表名。 LOCK TABLES t1 WRITE, t2 WRITE; ALTER TABLE t1 RENAME TO t3; ALTER TABLE t2 RENAME TO t1; ALTER TABLE t3 RENAME TO t2; UNLOCK TA
阅读全文
posted @ 2018-08-01 14:39
屠魔的少年
摘要:desc select * from test1 where id='1'; desc select * from test1 where id=10; show warnings \G;
阅读全文
posted @ 2018-08-01 14:39
屠魔的少年
摘要:(一) 建表规约 1. 【强制】表达是与否概念的字段,必须使用is_xxx的方式命名,数据类型是unsigned tinyint( 1表示是,0表示否)。 说明:任何字段如果为非负数,必须是unsigned。 正例: 表达逻辑删除的字段名 is_deleted,1表示删除, 0表示未删除。 表示未删
阅读全文
posted @ 2018-08-01 14:37
屠魔的少年
摘要:一:系统安装规范 1.关闭CPU节能,设定最大性能模式。 2.关闭NUMA(主要是为了避免swap)、C-states、C1E。 3.阵列卡策略使用FORCE WB,关闭预读。 4.机械盘时,所有盘组成RAID 10阵列。 5.SSD盘可以只有两块组成RAID 1或者三块做RAID 5 。 6.xf
阅读全文
posted @ 2018-08-01 14:36
屠魔的少年
摘要:方法一: select name from mysql.proc where db = 'your_db_name' and type= 'PROCEDURE'; 方法二: show procedure status; 查看存储过程或函数的创建代码 show create procedure pro
阅读全文
posted @ 2018-08-01 14:35
屠魔的少年
摘要:方法一: 通过information_schema.processlist表中的连接信息生成需要处理掉的MySQL连接的语句临时文件,然后执行临时文件中生成的指令。 mysql> select concat('KILL ',id,';') from information_schema.proces
阅读全文
posted @ 2018-08-01 14:35
屠魔的少年
摘要:SELECT r.`trx_id` waiting_trx_id, r.`trx_mysql_thread_id` waiting_thread, r.`trx_query` waiting_query, b.`trx_id` bolcking_trx_id, b.`trx_mysql_thread
阅读全文
posted @ 2018-08-01 14:33
屠魔的少年
摘要:-- 查看正在执行的SQL select * from information_schema.`PROCESSLIST` where command !='Sleep' AND db !='null' \G substring_index(host, ':', 1) as host -- 查看所有连
阅读全文
posted @ 2018-08-01 14:15
屠魔的少年
摘要:select round(sum(data_length+index_length)/1024/1024) as total_mb, round(sum(data_length)/1024/1024) as data_mb, round(sum(index_length)/1024/1024) as
阅读全文
posted @ 2018-08-01 14:13
屠魔的少年
摘要:安装软件依赖包yum install -y perl-IO-Socket-SSL perl-DBD-MySQL perl-Time-HiRes socat nc openssl-devel libaio-devel libaio 安装xtrabackup下载地址:http://www.percona
阅读全文
posted @ 2018-08-01 14:10
屠魔的少年