关于事务设计的思考
很多人应该不懂吧,本篇无私奉献一下。 很多人都一定思考过事务的设计问题。我们一开始接触 关系型数据库 的时候就被教育,开启事务,A 转账给 B,A 账户减少钱,B 账户增加钱,要么成功,要么失败,不会只做一半。当时觉得好牛逼,这个怎么做到的,比如在任何一个环节断电了,那怎么办呢。后来才知道是数据库记录了事物日志,通过日志的方式实现了两件事情必须都成功或者都失败,但是对于这个日志还是不太明白怎么回事,觉...
联合索引查询特别慢怎么办?
联合索引涉及到业务逻辑,其实已经超出数据库范畴,所以不用为妙,MySQL、MariaDB 是做不好的。 联合索引你知道多少呢?说实话,我找这个坑就花了很多时间,各种打日志,各种发布代码,线上测试,找到元凶不容易啊!遇到了一个特别慢的查询,耗时 300 多秒,其实是可以用上索引的,explain 显示可能可以用上,但是实际情况比较复杂,在不同的机器,不同的数据上测试效果完全不一样,看来 MySQL 对于...
UI设计用户体验之Wifi图标
,奋斗了,就不会很在乎这些了。姐姐家里的Wifi经常的坏,她自己也不太会弄,用3G流量的时候比较多。这次去他们家,我和哥哥将他们家的Wifi设置好了。可能是经常不用Wifi的原因吧,外甥女她更习惯使用数据流量。我跟她说,现在你们家有Wifi了,点击这个图标就可以打开使用了,可以节省流量。她有时候用了一会儿就关掉Wifi,然后用手机听歌,她的歌曲都是在线播放的,没有下载。后来我跟她聊天,她跟我说这个图标...
MySQL 获取复制主服务器二进制日志坐标
。配置从服务器复制,必须提前确定主服务的当前二进制日志的坐标。从服务器启动复制进程的时候需要这些信息,从二进制日志中找到正确的点它才能启动处理事件。在从服务想要开启复制进程开始同步前,如果主服务已经有数据,必须先停止在主服务上处理语句,然后获取当前二进制日志文件坐标并在主服务允许执行语句前导出数据。如果不停止主服务执行语句,导出的数据和获取的主服务的状态信息会不匹配,最终数据不一致或者毁坏从服务的数据...
突发,网站刚刚挂了近一小时
再次被数据库刺痛了,什么时候干掉它-这样一个垃圾软件? 从 14:40 多一点到 15 点 20 多,网站由于数据库链接不上,挂了近一小时,什么时候我要彻底干掉数据量。原因可能是系统内存不足,直接干掉了数据库以保证系统运行,我去,你干什么不好,干数据库。...
如何让MySQL支持utf8mb4字符集
_name} modify column {column_name} varchar(256) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;修改数据库表的字符集,如下示例:ALTER TABLE {table_name} CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;遇到的...
Laravel框架之Migration使用教程
,比如 Migration,我第一次构建项目的时候,由于 Migration 太多,卡在那里半个小时没有反应,以为死掉了。 言归正传,开始 Migrations 教程。 Migration 是用来控制数据库版本的。 增加数据表,参数 --table 最好带上,命令如下: php artisan make:migration create_tableName_table --create=tableNa...
MySQL 非法混合字符集等号操作异常
ration '='' in ...报错原因是因为搜索引擎快照界面是 gb2312 编码,使用这样的编码难道是为了节约存储?在网上找了很多资料,有人说使用 binary() 函数来解决报错,有人说修改数据库编码,让数据库的编码和 MySQL 的设置都保持一致。个人认为统一编码是不太好的做法,至少是不合适的,比如数据库个别表为了支持 emoji,使用的是 utf8mb4 编码,你总不能把所有的表都改成 ...
使用命令设置MySQL数据表自增ID起始值
有时候我们清空了 MySQL 数据库中数据表的记录,自动增长的 ID 值变的很大,如何将自动增长的 ID 值设置为1或者修改为其他的值呢?使用一些工具,比如 NaviCat for MySQL 当然非常简单,通过在设计表处修改即可,其他的一些工具也都很简单。下面给出使用 SQL 命令修改自动增长 ID 的起始值的方法,特别实用,尤其在通过程序处理的时候。 mysql> alter table {ta...
is marked as crashed and last (automatic?) repair failed
MYSQL MyISAM 数据表出现问题,提示 Error: Table './db_name/table_name' is marked as crashed and last (automatic?) repair failed。修复数据表操作: 1. service mysqld stop;2. cd /var/lib/mysql/db_name/3. myisamchk -r table_na...