Jump to content

Nathan

Administrators
  • Content count

    2,173
  • Joined

  • Last visited

  • Days Won

    59
  • Feedback

    100%

Nathan last won the day on January 11

Nathan had the most liked content!

About Nathan

  • Rank
    Founder
  • Birthday 10/07/1983

Contact Methods

Profile Information

  • Gender
    Male
  • Location
    Kansas City
  • Expertise
    Database

Recent Profile Visitors

40,418 profile views
  1. Official Desktop Image Thread

    Not sure who took the picture but no filter and a storm over Kansas City years ago.
  2. InstaSaber

    Looks like fun...
  3. SOLO: A STAR WARS STORY

    Anyone else pumped for this? http://www.starwars.com/news/official-synopsis-for-solo-a-star-wars-story-revealed
  4. MYSQL MyISAM vs InnoDB

    Not a batch. They are API calls that come in from different clients/sources in different intervals.
  5. MYSQL MyISAM vs InnoDB

    An application I've been troubleshooting has had major performance issues last week. I spent a few hours on it banging my head against a wall. Finally after doing some research I found that a lot of the database tables were created years ago in the MyISAM storage engine. After reading further I saw that for this application at least, InnoDB made much more sense. I'm actually not sure why you would ever use MyISAM anymore really... The server itself was showing massive MySQL connections at any give time, 20k-30k! There were not near that many people online so I was confused as to what was happening. I knew the page that was causing a majority of the issues though as it was showing massive load times, approximately 40 seconds. I tracked down the query and it was this: select lat, lon, createDate from activityTracking where userID = 404 order by id desc limit 1 There were already indexes on the userID field and id is a primary key on the table. The query would run for about 4 seconds and it was in a PHP loop for multiple records that were displaying on the page, so 4 seconds about 10 times = 40 second page load time. The query at first look seems to be very efficient, it has indexes, and order by and limit. So I randomly removed the limit 1 from the query just to see what would happen. select lat, lon, createDate from activityTracking where userID = 404 order by id desc This time it executed in .0099 seconds. How can that be? Well the table itself have records inserted every second, probably 100 records per second, so there must be some table locking going on or some index being rebuilt way too often that's causing my issue I figured. That's when I stumbled upon the MyISAM and InnoDB storage engine questions and explanations. InnoDB: The InnoDB storage engine in MySQL. Support for transactions (giving you support for the ACID property). Row-level locking. Having a more fine grained locking-mechanism gives you higher concurrency compared to, for instance, MyISAM. Foreign key constraints. Allowing you to let the database ensure the integrity of the state of the database, and the relationships between tables. InnoDB is more resistant to table corruption than MyISAM. Support for large buffer pool for both data and indexes. MyISAM key buffer is only for indexes. MyISAM is stagnant; all future enhancements will be in InnoDB. This was made abundantly clear with the roll out of Version 8.0. MyISAM: The MyISAM storage engine in MySQL. Simpler to design and create, thus better for beginners. No worries about the foreign relationships between tables. Faster than InnoDB on the whole as a result of the simpler structure thus much less costs of server resources. -- Mostly no longer true. Full-text indexing. -- InnoDB has it now Especially good for read-intensive (select) tables. -- Mostly no longer true. Disk footprint is 2x-3x less than InnoDB's. -- As of Version 5.7, this is perhaps the only real advantage of MyISAM. MyISAM Limitations: No foreign keys and cascading deletes/updates No transactional integrity (ACID compliance) No rollback abilities 4,284,867,296 row limit (2^32) -- This is old default. The configurable limit (for many versions) has been 2**56 bytes. Maximum of 64 indexes per table InnoDB Limitations: No full text indexing (Below-5.6 mysql version) Cannot be compressed for fast, read-only (5.5.14 introduced ROW_FORMAT=COMPRESSED) You cannot repair an InnoDB table So that was my issue, my select is getting queued up behind the inserts that were firing and causing the long query times. I logged into phpmyadmin and modified the table to InnoDB and all of a sudden my queries were running in .0004 seconds. The page then loaded in less than a second and everything was all set. I'm still not sure why you would ever use MyISAM tables. InnoDB is something I'll be using going forward for sure. Here's a little more info on MyISAM vs InnoDB - http://blog.danyll.com/myisam-vs-innodb/
  6. I had a request last week to setup a hosting environment with a sub-domain of a sub-domain. I hadn't ever done it before so wasn't sure how or what I would run into. Turns out it was an easy setup. I logged into WHM/cPanel and went into the normal sub-domain area. For this example I'm just setting up sub2.sub1.prodjex.com. First you have to setup the first level of the domain, so the first sub-domain "sub1". After that's created you can now setup your second sub-domain level of sub2. Make sure to select your first level sub-domain from the "Domain" dropdown. Now your server is configured for the sub-domain of a sub-domain. Now let's update your DNS records to point to it. I use GoDaddy, but it's still just setting up an A or CNAME record at your registrar like so: That's it, your sub-domain of a sub-domain is now correctly setup and working once the DNS propagates!
  7. Looks pretty cool!
  8. January 9th was the 30th anniversary of the ride Star Tours at Disney. Crazy it's been that long, couldn't count how many times I've been on it. I was reading some on it earlier and also saw this, can't believe that cost, 32 million, especially back in the 1980's, insane! Also didn't realize it had been retired and replaced by a newer version. Anyone else remember waiting in line and all the cool stuff to look at?
  9. About Prodjax

    The goal with Prodjax is to create a tool that combines project management and the CRM into one seamless application that people will actually use. It's been 9 months since we started development and it's coming along nicely. Here are some of the completed features: Project Management - Projects are the top level bucket in Prodjax Tasks - Tasks reside under projects Task Followers - Following a task allows you to receive notifications and stay up to date on tasks you're not assigned to Sub-Tasks - Sub-Tasks are micro-tasks under tasks Checklists - Have some small to-do's that don't really need the detail of a Sub-Task? Checklists are simple and easy to use just for this Commenting - You can comment on both projects and tasks with images, all nested views Time Management/Work Logs - Track your time while you work and Prodjax will keep it organized Activity Logs - All history is logged and shown within the system so you can easily see what's happened on your projects Easy Prioritization - We use a simple prioritization system so you know what needs to be completed Status - We have several status's so you can easily see is it open? in progress? completed? Notifications - Our notification system includes both inline on site notifications and email notifications for all activity that happens Due Dates - Tasks and Projects both have the ability to set due dates, but not required if ongoing Creators & Assigned Users - We always show who created the task along with who all is assigned to the task Public/Private - When creating projects you can flag it to be public company wide or private just to you and anyone you assign Multiple Organizations - While working in a single area with multiple projects was the original intended way of doing things we quickly saw the need for multiple organizations. Some users have multiple businesses. So we allow jumping between organizations in just a few clicks. It's currently in beta status, so free to use for the time being. Check it out and give us some feedback! https://www.prodjax.com/
  10. With the addition of the menu manager in IP.Board 4.x updating your menu navigation bar has become a breeze. One thing they still have not included however, is the ability to set custom fontawesome icons on them. The standard IP.Board modules already have good icons set, but if you add external links or install a marketplace application the associated icon doesn't always make sense. Some don't have one set at all and you're left with the default page icon. Here's the easiest way to update them using CSS that won't get overridden next time you update your theme. 1. Login to your adminCP and head to your theme settings. Click the button to "Edit HTML and CSS". 2. Once there navigate to the CSS tab and then open the custom.css file. This is where you will put your new CSS code. 3. You need to find the identifier of your icon to change, so open up your board index and right click on the icon and select "Inspect Element". You are looking for the parent of your link that is a unique identifier such as a CSS ID. Mine for example you will see is "elNavSecondary_17". Copy that text and jump back over to your adminCP area. 4. Take a look at fontawesome's website to find the new icon you'd like to use. Make sure to fine the "Unicode" as we'll need that. 5. Now you just need to add the final CSS into your adminCP and you're all set. Make sure to save! /* Place your custom css code in this file */ .ipsNavBar_primary #elNavSecondary_17 a:before{ content: "\f0e6"; }
×